Description

This notebook uses a newly developed Gaussian Process-based method to solve for the near-optimal set of solutions for CO2 capture using proton coupled electron transfers (PCET) to drive pH swings. The work assumes that the redox molecule is a quinone, and restricts the search to only combinations of properties that a quinone is likely to have. After determining the restricted search space, the performance of CO2 capture, defined by minimum energy demand and the CO2 capture flux, will be determined using established thermodynamic and kinetics equations. The resulting Pareto frontier of this bi-objective problem is solved using the GPareto package, then characterized to define acceptable sub-optimal performance in the likely event that a compound with the exact specifications of any of the Pareto frontier estimates not exist. The near-optimal set will be solved using the established method (see other mathematical examples for details and description of the algorithm) to describe what criteria the optimal quinone and solution composition should have.

Code

Initialization

Clear the workspace and define the functions.

# Setup
rm(list = ls())
# Visualization
library(dplyr)
library(ggplot2)
library(patchwork)
# Parallel processing
library(parallel)
library(doParallel)
# Gaussian processes
library(GPareto)
library(DiceKriging)
library(DiceOptim)
# Optimization
library(GA)

Parameter space

Data for restricting the quinone features is based on results from Huynh et al. J Am Chem Soc. 2016 December 14; 138(49): 15903–15910. doi:10.1021/jacs.6b05797.

Remove points that are not likely to be stable within the electrochemcial window of water. For the process: Q + 2e- + 2H+ <-> QH2 We can roughly assume that the reduction reaction is competing with hydrogen evolution 2H+ + 2e- <-> H2 and the oxidation reaction is competing with oxygen evolution 2H2O + 4OH- <-> O2 + 4e-

Both of these reactions are pH dependent, so the cutoff values are not obvious. At the extreme, the reduction potential of hydrogen evolution will be at its highest (most likely to compete with the quinone reduction) at the lowest pH, which would typically be at the pH where carbonic acid makes up > 90% of the CO2 speciation (pH = 5.33). Similarly, the reduction potential of oxygen evolution will be at its lowest at the highest pH, which would be just above the hydroquinone’s buffer region (the higher of its pKas + 1).

Practically, the quinone electrochemistry has much faster kinetics than either gas evolution reaction in the absence of a specific water-splitting catalyst, so a tolerance of about 200 mV will be added to accommodate.

# Load data and correlation plot package
quinone.data = read.csv(file = 'HuynhData.csv', skip = 1)

# Filter the data to only those whose reaction would be stable in water
## Hydrogen evolution
h2.evo = -59.2*1e-3 * 5.33
quinone.data = filter(quinone.data, E0.2 > h2.evo)

## Cutoff value for oxygen evolution
o2.evo = 1.229 + -59.2*1e-3*quinone.data$Pka.2+1
quinone.data = filter(quinone.data, E0.1 < o2.evo)

quinone.data

# Correlation plot between the E0 and pka values
cor.mat = matrix(data = rep(0, 16), nrow = 4)
for(i in seq(from = 6, to = 9, by = 1)){
  for(j in seq(from = i, to = 9, by = 1)){
    cor.mat[i-5,j-5] = cor(x = quinone.data[,i], y = quinone.data[,j])
  }
}
cor.mat
     [,1]      [,2]       [,3]       [,4]
[1,]    1 0.8090796 -0.7714352 -0.8214661
[2,]    0 1.0000000 -0.8668815 -0.8659535
[3,]    0 0.0000000  1.0000000  0.8751782
[4,]    0 0.0000000  0.0000000  1.0000000
g1 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = E0.1, x = E0.2)) +
  labs(subtitle = paste('r = ', round(cor.mat[1,2], 3))) 
g2 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = E0.1, x = Pka.1)) +
  labs(subtitle = paste('r = ', round(cor.mat[1,3], 3)))
g3 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = E0.1, x = Pka.2)) +
  labs(subtitle = paste('r = ', round(cor.mat[1,4], 3)))
g4 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = E0.2, x = Pka.1)) +
  labs(subtitle = paste('r = ', round(cor.mat[2,3], 3)))
g5 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = E0.2, x = Pka.2)) +
  labs(subtitle = paste('r = ', round(cor.mat[2,4], 3)))
g6 = ggplot(quinone.data) +
  geom_point(mapping = aes(y = Pka.1, x = Pka.2)) +
  labs(subtitle = paste('r = ', round(cor.mat[3,4], 3)))

(g1 + g2 + g3) / (plot_spacer() + g4 + g5) / (plot_spacer() + plot_spacer() + g6)

rm(g1, g2, g3, g4, g5, g6)
rm(h2.evo, i, j, o2.evo, cor.mat)

While all four variables are strongly co-correlated, this is largely irrelevant because the thermodynamic and kinetic analyses do not rely on the reduction potential besides assuming that gas evolution does not occur. There is a Bronsted-like relationship between the reduction potential and the reaction rate of the deprotonated hydroquinone nucleophilically attacking the CO2 [Simpson & Durand 1990, doi: 10.1016/0013-4686(90)85012-C], but this is not likely to be the dominant mechanism because the reaction with OH- is approximately 10 to 100 times faster in water. To determine which pKa will be the free variable and which will be represented by an error term of the linear regression, the relative normalized standard deviations of the errors were compared.

print('pka2 as free variable, pKa1 as the solved variable')
[1] "pka2 as free variable, pKa1 as the solved variable"
mod1 = lm(Pka.1 ~ Pka.2, data = quinone.data)
sd(mod1$residuals[abs(mod1$residuals) < 10]) / diff(range(quinone.data$Pka.1))
[1] 0.07853397
  
print('pka1 as free variable, pKa2 as the solved variable')
[1] "pka1 as free variable, pKa2 as the solved variable"
mod2 = lm(Pka.2 ~ Pka.1, data = quinone.data)
sd(mod2$residuals[abs(mod2$residuals) < 10]) / diff(range(quinone.data$Pka.2))
[1] 0.070064
x = c(unname(mod1$residuals), unname(mod2$residuals))
var = c(rep('pka1', length(mod1$residuals)), rep('pka2', length(mod1$residuals)))
ggplot(data.frame(x, var)) +
  geom_density(mapping = aes(x = x, color = var)) +
  scale_color_manual(labels = c('pka1' = 'pka1 = f(pka2)', 'pka2' = 'pka2 = f(pka1)'),
                     values = c('pka1' = 'red', 'pka2' = 'blue'), name = '') +
  labs(x = 'Residual', y = 'Probability Density')


# Determine the value for the standard deviation that should be used to encompass 98% of the search space
q1 = quantile(mod2$residuals, probs = c(0.01))
q2 = quantile(mod2$residuals, probs = c(0.99))
# Plot the data and the search space
fit.ln = data.frame(Pka.1 = seq(from = -8.33, to = 13.41, length.out = 3))
fit.ln$Pka.2 = predict(object = mod2, newdata = fit.ln)
ggplot() +
  geom_point(quinone.data, mapping = aes(x = Pka.1, y = Pka.2), color = 'blue', alpha = 0.5) +
  geom_line(fit.ln, mapping = aes(x = Pka.1, y = Pka.2), color = 'black', linetype = 1) +
  geom_line(fit.ln, mapping = aes(x = Pka.1, y = Pka.2+q2), color = 'black', linetype = 2) +
  geom_line(fit.ln, mapping = aes(x = Pka.1, y = Pka.2+q1), color = 'black', linetype = 2) +
  geom_line(fit.ln, mapping = aes(x = Pka.1, y = Pka.1), color = 'red', linetype = 2) +
  geom_line(fit.ln, mapping = aes(x = Pka.1, y = Pka.1+q2), color = 'red', linetype = 2) +
  labs(title = expression('Known Quinone p'*italic(K)*''[a]*'s'),
       y = expression('p'*italic(K)*''['a,2']),
       x = expression('p'*italic(K)*''['a,1']))

q1
       1% 
-3.932909 
q2
     99% 
5.510746 
rm(fit.ln, x, var)

The variance alone show very little difference between the choice, which pKa1 being the free variable having a slightly better response. This is confirmed by the distribution of the residuals (omitting the single outlier), which shows that having pKa1 as the free variable gives a distribution closer to a normal distribution. Therefore, the range of pKas is:

pKa1: -8.33 to 13.41 pKa2 = f(pKa1) + error

While the error for pKa2 is nearly Gaussian in shape, the mathematical description works better if it is sampled from a uniform distribution. From the data, 98% of the data is captured within an error of -3.9 to +5.5.

This range of pKas has 2 problems: * An issue seems to arise when the second pKa is lower than the first, however, despite some actual measurements violating that criteria (red dotted line). All points that do violate that restriction are within measurement error with one exception, so that could be the cause. * The pH of the process is not likely to extend below 3 because the primary acid in question is carbonic acid. This means that pKa values below 2 are effectively the same and do not need to be sampled further. Therefore, the lower bound for pKa1 can be increased to reduce the search space.

The refined search space is:

pKa1: 0 to 13.41 pKa2 = pKa1 + error error ~ unif(0, 5.5)

Objective Functions

The objective function for energy demand solves the set of equilibrium equations across the range of charge and gas transfers based on four state variables: total dissolved inorganic carbon (DIC), state of charge (xA), partial pressure of CO2 (pCO2), and solution pH.

The minimum energy demand assumes all charge is passed at the Nernst potential, which is updated as charge passes through the system. The energy demand assumes anti-symmetric operation, ie. quinone reduction at the cathode and hydroquinone oxidation at the anode. Charge balance of the anolyte and catholyte are assumed to be the result of the background electrolyte travelling across an ion selective membrane. The gas transfers are assumed to be separate stages from the electrochemical stages, purely for the sake of simplicity. This estimate for the minimum energy is a slight overestimate because of over-pressurization of the CO2; coupling the gas transfer steps with the appropriate electrochemical steps decreases the minimum energy by approximately a factor of 2. The function can accommodate feed CO2 gases of any partial pressure, but this study is interested in 3 applications: coal flue gas (15v% feed to 1.5v% lean), air revitalization (2000 ppm to 1000 ppm), and direct air capture (400 ppm to 250 ppm).

This code is broken down into explicit functions and derived functions. Explicit functions are a series of sub-functions which solve for one of the four state variables using knowledge of the other three state variables and the solution conditions. These functions solve the set of chemical equilibrium, mass, and charge balance equations for the bulk solution. Derived functions use the information from the explicit functions to determine relevant information for determining the energy demand and CO2 flux.

For the purpose of generalization, these equations are written with the variables ‘beta1’ and ‘beta2’ which describe the deprotonated hydroquinone’s affinity for CO2, forming an organic carbonate. This species is ignored in this particular notebook for the above-stated reason (slow kinetics), and therefore both variables are set to 0. These variables are included because other compounds have been proposed to capture CO2 primarily through that mechanism, and thus they could also be studied with this script.

# Direct explicit functions
# Functions are named with the output variable first, then all relevant inputs
DIC.xA.pCO2.pH.A.k.beta = function(xA, pCO2, pH, A.tot, k1, k2, beta1, beta2){
  # Constants: carbonate and water chemistry 
  kH = 3.4e-2; # M/atm
  kc1 = 10^-6.3
  kc2 = 10^-10.3
  kw = 1e-14
  
  # Proton concentration
  H = 10^-pH
  
  # Inorganic carbonate
  CO3.free = kH * pCO2 * (H^2 + kc1 * H + kc1 * kc2) / H^2
  
  # Bound carbon
  CO2.bound = A.tot*xA *k1*k2*(beta1*pCO2 + 2*beta2*pCO2^2)/((1 + beta1*pCO2 + beta2*pCO2^2)*k1*k2 + k1*H + H^2)
  
  return(CO3.free + CO2.bound)
}

pH.xA.pCO2.A.k.beta.Na = function(xA, P, At, k1, k2, beta1, beta2, Na){
  # Constants: carbonate and water chemistry 
  kH = 3.4e-2; # M/atm
  kc1 = 10^-6.3
  kc2 = 10^-10.3
  kw = 1e-14
  
  # Polynomial root
  x5 = 1
  x4 = k1 + Na + 2*At*xA 
  x3 = k1*k2 - kw + k1*Na + beta1*k1*k2*P - kc1*kH*P +
      beta2*k1*k2*P^2 + 2*At*k1*xA - 2*At*k2*xA
  x2 = (-k1)*kw + k1*k2*Na - k1*kc1*kH*P - 2*kc1*kc2*kH*P + beta1*k1*k2*Na*P + beta2*k1*k2*Na*P^2 -
      2*At*k1*k2*xA + 2*At*beta1*k1*k2*P*xA + 2*At*beta2*k1*k2*P^2*xA
  x1 = (-k1)*k2*kw - k1*k2*kc1*kH*P - 2*k1*kc1*kc2*kH*P - beta1*k1*k2*kw*P -
      beta1*k1*k2*kc1*kH*P^2 - beta2*k1*k2*kw*P^2 - beta2*k1*k2*kc1*kH*P^3
  x0 = - 2*k1*k2*kc1*kc2*kH*P - 2*beta1*k1*k2*kc1*kc2*kH*P^2 -
     2*beta2*k1*k2*kc1*kc2*kH*P^3
  roots = polyroot(c(x0, x1, x2, x3, x4, x5))
  
  # Only the real and positive roots
  H = roots[abs(Im(roots)) < 1e-8]
  H = Re(H[Re(H) > 0])
  
  # It is possible for multiple roots to satisfy the solution. Typical pH is going to be the one closest to 7-8
  # H = H[which.min(abs(-log10(H) - 7))]

  return(-log10(H[1]))
}

pCO2.xA.pH.A.k.beta.Na = function(xA, pH, At, k1, k2, beta1, beta2, Na, pCO2.prev){
  # Constants: carbonate and water chemistry 
  kH = 3.4e-2; # M/atm
  kc1 = 10^-6.3
  kc2 = 10^-10.3
  kw = 1e-14
  # Proton concentration
  H = 10^-pH
  
  # Polynomial root
  x3 = (-beta2)*H*k1*k2*kc1*kH - 2*beta2*k1*k2*kc1*kc2*kH
  x2 = beta2*H^3*k1*k2 - beta1*H*k1*k2*kc1*kH - 2*beta1*k1*k2*kc1*kc2*kH -
      beta2*H*k1*k2*kw + beta2*H^2*k1*k2*Na + 2*At*beta2*H^2*k1*k2*xA
  x1 = beta1*H^3*k1*k2 - H^3*kc1*kH - H^2*k1*kc1*kH - H*k1*k2*kc1*kH - 2*H^2*kc1*kc2*kH - 2*H*k1*kc1*kc2*kH -
      2*k1*k2*kc1*kc2*kH - beta1*H*k1*k2*kw + beta1*H^2*k1*k2*Na +
      2*At*beta1*H^2*k1*k2*xA
  x0 = H^5 + H^4*k1 + H^3*k1*k2 - H^3*kw - H^2*k1*kw - H*k1*k2*kw +
      H^4*Na + H^3*k1*Na + H^2*k1*k2*Na + 2*At*H^4*xA + 2*At*H^3*k1*xA -
      2*At*H^3*k2*xA - 2*At*H^2*k1*k2*xA
  roots = polyroot(c(x0, x1, x2, x3))
  
  # Only the real and positive roots
  pCO2 = roots[abs(Im(roots)) < 1e-8]
  pCO2 = Re(pCO2[Re(pCO2) > 0])
  # There are cases of multiepl roots. Find the one that is closest to the previous known value
  pCO2 = pCO2[which.min(abs(log10(pCO2) - log10(pCO2.prev)))]
  
  return(pCO2)
}

pH.DIC.xA.pCO2.A.k.beta = function(DIC, xA, P, At, k1, k2, beta1, beta2){
  # Constants: carbonate and water chemistry 
  kH = 3.4e-2; # M/atm
  kc1 = 10^-6.3
  kc2 = 10^-10.3
  kw = 1e-14
  
  # Polynomial root
  x4 = (DIC - kH*P)
  x3 = (DIC*k1 - k1*kH*P - kc1*kH*P)
  x2 = (DIC*k1*k2 + beta1*DIC*k1*k2*P - k1*k2*kH*P - k1*kc1*kH*P - kc1*kc2*kH*P + beta2*DIC*k1*k2*P^2 - 
    beta1*k1*k2*kH*P^2 - beta2*k1*k2*kH*P^3 - At*beta1*k1*k2*P*xA - 2*At*beta2*k1*k2*P^2*xA)
  x1 = ((-k1)*k2*kc1*kH*P - k1*kc1*kc2*kH*P - beta1*k1*k2*kc1*kH*P^2 - 
        beta2*k1*k2*kc1*kH*P^3)
  x0 = (-k1)*k2*kc1*kc2*kH*P - beta1*k1*k2*kc1*kc2*kH*P^2 - beta2*k1*k2*kc1*kc2*kH*P^3
  roots = polyroot(c(x0, x1, x2, x3, x4))
  
  # Only the real and positive roots
  H = roots[abs(Im(roots)) < 1e-8]
  H = Re(H[Re(H) > 0])
  return(-log10(H))
}

pCO2.DIC.xA.pH.A.k.beta = function(DIC, xA, pH, At, k1, k2, beta1, beta2){
  # Constants: carbonate and water chemistry 
  kH = 3.4e-2; # M/atm
  kc1 = 10^-6.3
  kc2 = 10^-10.3
  kw = 1e-14
  
  H = 10^-pH
  
  # Polynomial root
  x3 = ((-beta2)*H^2*k1*k2*kH - beta2*H*k1*k2*kc1*kH - beta2*k1*k2*kc1*kc2*kH)
  x2 = (beta2*DIC*H^2*k1*k2 - beta1*H^2*k1*k2*kH - beta1*H*k1*k2*kc1*kH - 
        beta1*k1*k2*kc1*kc2*kH - 2*At*beta2*H^2*k1*k2*xA)
  x1 = (beta1*DIC*H^2*k1*k2 - H^4*kH - H^3*k1*kH - H^2*k1*k2*kH - H^3*kc1*kH - 
        H^2*k1*kc1*kH - H*k1*k2*kc1*kH - H^2*kc1*kc2*kH - H*k1*kc1*kc2*kH - 
        k1*k2*kc1*kc2*kH - At*beta1*H^2*k1*k2*xA)
  x0 = DIC*H^4 + DIC*H^3*k1 + DIC*H^2*k1*k2
  roots = polyroot(c(x0, x1, x2, x3))
  
  # Only the real and positive roots
  pCO2 = roots[abs(Im(roots)) < 1e-8]
  pCO2 = Re(pCO2[Re(pCO2) > 0])
  return(pCO2)
}

# There are cases in the process where both pH and pCO2 are unknown. 
# For those cases, both variables can be solved togther, but it leads to coupled nonlinear root finding problems. 
# Initial testing of the equations has found that using an initial guess of pH (such as the pH at the immediately previous state of charge) leads to a good enough estimate of the pH to solve pCO2.
pH.it.guess.DIC.At.k.beta = function(pH.guess, xA.next, DIC, A.tot, k1, k2, beta1, beta2, Na){
  # Iterates to solve the pH and pCO2 at the next electrochemical time step, 
  # given xA and DIC and an initial guess (the pH at the previous time step)
  pCO2.it = c(); pH.it = c(pH.guess)
  pCO2.it = pCO2.DIC.xA.pH.A.k.beta(DIC = DIC, xA = xA.next, pH = pH.it, At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  for(n in 2:74){
    pH.it[n] = pH.xA.pCO2.A.k.beta.Na(xA = xA.next, P = pCO2.it[n - 1], At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
    pCO2.it[n] = pCO2.DIC.xA.pH.A.k.beta(DIC = DIC, xA = xA.next, pH = pH.it[n], At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  } 
  n = 7:5
  pH.it[n] = pH.xA.pCO2.A.k.beta.Na(xA = xA.next, P = pCO2.it[n - 1], At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  # Due to some oscillatory instabilities under specific conditions, take the last 25 and use the value that is closest to the guess
  pH.res = pH.it[50:75]
  pH.res = pH.res[which.min(abs(pH.res) - pH.guess)]
  return(pH.res)
}
# Derived functions
# DIC difference: CO2/L*cycle - this is a good first check for the condition to ensure that CO2 is, in fact, captured, represented by a positive value.
DIC.diff = function(Na, A, beta1, beta2, k1, k2, pCO2.in, pCO2.out){
  # Constants
  xA.lim = c(0.025, 0.975)
  # pCO2.in = 0.1; pCO2.out = 1
  
  # Absorption: low P, high xA
  start.soln = data.frame(p.CO2 = pCO2.in, xA = max(xA.lim))
  start.soln$pH = pH.xA.pCO2.A.k.beta.Na(xA = start.soln$xA, P = start.soln$p.CO2, 
                                     At = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  start.soln$DIC = DIC.xA.pCO2.pH.A.k.beta(xA = start.soln$xA, pCO2 = start.soln$p.CO2, pH = start.soln$pH, 
                                       A.tot = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  
  # Desorption: high P, low xA
  stop.soln = data.frame(p.CO2 = pCO2.out, xA = min(xA.lim))
  stop.soln$pH = pH.xA.pCO2.A.k.beta.Na(xA = stop.soln$xA, P = stop.soln$p.CO2, 
                                     At = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  stop.soln$DIC = DIC.xA.pCO2.pH.A.k.beta(xA = stop.soln$xA, pCO2 = stop.soln$p.CO2, pH = stop.soln$pH, 
                                       A.tot = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  
  # Calculate the difference
  DIC.diff = start.soln$DIC - stop.soln$DIC
  return(DIC.diff)
}

# Minimum partial pressure of the lean gas
pCO2.lean = function(Na, A, beta1, beta2, k1, k2, pCO2.out){
  # Constants
  xA.lim = c(0.025, 0.975)
  
  # Calculate the DIC of the outlet after complete desorption: high P, low xA
  stop.soln = data.frame(p.CO2 = pCO2.out, xA = min(xA.lim))
  stop.soln$pH = pH.xA.pCO2.A.k.beta.Na(xA = stop.soln$xA, P = stop.soln$p.CO2, 
                                     At = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  stop.soln$DIC = DIC.xA.pCO2.pH.A.k.beta(xA = stop.soln$xA, pCO2 = stop.soln$p.CO2, pH = stop.soln$pH, 
                                       A.tot = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  
  # Calculate the pCO2 when fully reduced, holding DIC constant. Due to the need for a previous case, run in ~5 steps
  out.soln = data.frame(DIC = stop.soln$DIC, xA = seq(from = min(xA.lim), to = max(xA.lim), length.out = 5))
  # Loop the pH and pCO2 simultaneously
  loop.pH = pH.it.guess.DIC.At.k.beta(pH.guess = stop.soln$pH[1], xA.next = out.soln$xA[1], DIC = out.soln$DIC[1],
                                      A.tot = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  loop.pCO2 = pCO2.xA.pH.A.k.beta.Na(xA = out.soln$xA[1], pH = loop.pH[1],
                                     At = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, 
                                     pCO2.prev = stop.soln$p.CO2)
  for(i in 2:5){
    loop.pH[i] = pH.it.guess.DIC.At.k.beta(pH.guess = loop.pH[i-1], xA.next = out.soln$xA[i], DIC = out.soln$DIC[i],
                                        A.tot = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
    loop.pCO2[i] = pCO2.xA.pH.A.k.beta.Na(xA = out.soln$xA[i], pH = loop.pH[i],
                                       At = A, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, 
                                       pCO2.prev = loop.pCO2[i-1])
    
  }
  return(loop.pCO2[i])
}

Penalty function: logistic weighting function such that for values where 90% of the CO2 is captured, the weight is 1, but when less CO2 is captured, the weight increases based on the relative change on the minimum work of separation. The hyperparameters L, k, and x0 of the logistic component of the weighting function were tuned by fitting to a variety of minimum lean gas pressures on the range of 0.016 to 2.5 atm and then selected as the modal value. The logistic function was tuned such that the growth rate steepness captured the range of 0 to 90% capture; when no CO2 could be captured, the weight is applied fully.

A penalty function is not necessary for the flux because insufficient capture would manifest as negative fluxes. It may still show up in the Pareto frontier, but it can easily be filtered out, unlike the cases with the energy demand.

Further tuning of the exact value of L is based on the minimumm energy demand for the specific lean gas minimum.

GPar.all = read.csv(file = 'GPar_WeightTuningSet.csv')

# Original weighting function: adjust by the minimum energy demand, simplified
weight.fun = function(pCO2.lean){
  # Maximum weight
  weight.max = log(1/10) / log(pCO2.lean/0.15)
  # Logistic function
  L = weight.max - 0.98
  k = 267; x0 = 0.071
  # data.frame(weight.max)
  return(L/(1 + exp(-k * (pCO2.lean - x0))) + 1)
}

# Calculate weight
GPar.all$weight = weight.fun(GPar.all$pCO2.lean)

ggplot(filter(GPar.all, Energy.kJ.mol*weight < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = weight)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Simplified Weight')

ggplot(filter(GPar.all, Energy.kJ.mol*weight < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Unweighted Energy')

ggplot(filter(GPar.all, Energy.kJ.mol*weight < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol*weight)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Simple Weighted Energy')

NA
NA

Simple weighted energy is not enough of a penalty; the minimum energy for systems that do not capture >90% of the CO2 are still showing lower energy demands.

Using the complete expression for minimum energy demand instead of the simplified form, which makes a number of assumptions about negliglbe terms.

Minimum energy demand: \[ RT \sum [n_{CO_2} \ ln(y_{CO_2}) + n_{-CO_2} \ ln(y_{-CO_2})]_{outlet} - [n_{CO_2} \ ln(y_{CO_2}) + n_{-CO_2} \ ln(y_{-CO_2})]_{inlet}\]

Since the concern is only the ratio for the weighting factor, then can assume the \(RT\) term cancels.

The inlet term is constant at 0.15 atm and the reference point is 90% reduction in the partial pressure in the lean gas. The calculation is based on mass balance, assuming that the volume adjusted to maintain a total pressure of 1 atm.

Assuming 1 total mole of gas is processed at the reference point: * Inlet: 0.15 mol CO2, 0.85 mol not CO2 * Lean gas: 0.85 mol not CO2, (0.0150.85)/(1 - 0.015) mol CO2 Enriched gas: 1 - (0.015*0.85)/(1 - 0.015) mol CO2, 0.1% not CO2

The lean gas and enriched gas will change according to the system with a similar mass balance.

weight.fun2 = function(pCO2.lean){
  # Ideal
  n.inlet = c(0.15, 0.85)
  n.lean = c(0.85, 0.015*0.85/(1 - 0.015))
  n.enrich = c(0.001*(1 - 0.015*0.85/(1 - 0.015)), 1 - 0.015*0.85/(1 - 0.015))
  
  E.ideal = sum(n.enrich*log(n.enrich/sum(n.enrich)) + 
                  n.lean*log(n.lean/sum(n.lean)) - 
                  n.inlet*log(n.inlet/sum(n.inlet)))

  # Actual: separate into 3 cases:
  E.tru = rep(x = 0, times = length(pCO2.lean))
  # Third case: if the lean gas pressure is above 1, i.e. it pressurized
  pos3 = (pCO2.lean >= 0.99)
  # Set the lean gas pressure to 0.999, 
  # then multiply the weight by the actual pressure to correct the energy; 
  # since the weight is divided by this energy, this means dividing by the pressure
  set.lean = 0.999
  n.enrich.co2 = (set.lean - 0.15)/(1 - set.lean)
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos3] = (- sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))) / pCO2.lean[pos3]

  # Second case: if the lean gas pressure is between 0.15 and 1, 
  # i.e. the CO2 was moved from the pure gas to the lean gas
  pos2 = (pCO2.lean >= 0.15 & pCO2.lean < 0.99)
  # For the mass balance to work, gas must have moved from the enriched stream to the lean gas
  n.enrich.co2 = (pCO2.lean[pos2] - 0.15)/(1 - pCO2.lean[pos2])
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos2] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # First case: if the lean gas pressure is less than 0.15, i.e. some amount of capture happened
  pos1 = (pCO2.lean < 0.15)
  # Mathematically identical to the lean gas case, just adjusting the lean gas and enriched gas mass balance
  n.lean = pCO2.lean[pos1]*0.85/(1 - pCO2.lean[pos1])
  n.enrich.co2 = 0.15 - n.lean
  n.enrich.gas = 0.001*n.enrich.co2
  
  E.tru[pos1] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # Maximum weight
  weight.max = E.ideal/E.tru

  # Logistic function
  L = weight.max - 0.98
  k = 267; x0 = 0.071
  # data.frame(weight.max)
  return(L/(1 + exp(-k * (pCO2.lean - x0))) + 1)
}

test.pco2 = 10^seq(from = -10, to = 2, by = 0.1)
weight.test = weight.fun2(test.pco2)
class = rep(0, length(test.pco2)); class[test.pco2 >= 0.15] = 1; class[test.pco2 >= 1] = 2
ggplot(filter(data.frame(x = test.pco2, y = weight.test, class) )) +
  geom_point(mapping = aes(x = x, y = y, color = (x < 0.015))) +
  scale_x_log10() + facet_wrap(~class, scales = 'free')

rm(test.pco2, weight.test, class)

# Calculate weight
GPar.all$weight2 = weight.fun2(GPar.all$pCO2.lean)

ggplot(filter(GPar.all, Energy.kJ.mol*weight2 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = weight2)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Complete Weight')

ggplot(filter(GPar.all, Energy.kJ.mol*weight2 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Unweighted Energy')

ggplot(filter(GPar.all, Energy.kJ.mol*weight2 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol*weight2)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Complete Weighted Energy')

While better, using the complete energy is not fixed upon this correction in that the minimum energy is still at a value where the flux would be negative. Amplifying an additional multiplicative factor to amplify the weight:

weight.fun3 = function(pCO2.lean){
  # Ideal
  n.inlet = c(0.15, 0.85)
  n.lean = c(0.85, 0.015*0.85/(1 - 0.015))
  n.enrich = c(0.001*(1 - 0.015*0.85/(1 - 0.015)), 1 - 0.015*0.85/(1 - 0.015))
  
  E.ideal = sum(n.enrich*log(n.enrich/sum(n.enrich)) + 
                  n.lean*log(n.lean/sum(n.lean)) - 
                  n.inlet*log(n.inlet/sum(n.inlet)))

  # Actual: separate into 3 cases:
  E.tru = rep(x = 0, times = length(pCO2.lean))
  # Third case: if the lean gas pressure is above 1, i.e. it pressurized
  pos3 = (pCO2.lean >= 0.99)
  # Set the lean gas pressure to 0.999, 
  # then multiply the weight by the actual pressure to correct the energy; 
  # since the weight is divided by this energy, this means dividing by the pressure
  set.lean = 0.999
  n.enrich.co2 = (set.lean - 0.15)/(1 - set.lean)
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos3] = (- sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))) / pCO2.lean[pos3]

  # Second case: if the lean gas pressure is between 0.15 and 1, 
  # i.e. the CO2 was moved from the pure gas to the lean gas
  pos2 = (pCO2.lean >= 0.15 & pCO2.lean < 0.99)
  # For the mass balance to work, gas must have moved from the enriched stream to the lean gas
  n.enrich.co2 = (pCO2.lean[pos2] - 0.15)/(1 - pCO2.lean[pos2])
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos2] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # First case: if the lean gas pressure is less than 0.15, i.e. some amount of capture happened
  pos1 = (pCO2.lean < 0.15)
  # Mathematically identical to the lean gas case, just adjusting the lean gas and enriched gas mass balance
  n.lean = pCO2.lean[pos1]*0.85/(1 - pCO2.lean[pos1])
  n.enrich.co2 = 0.15 - n.lean
  n.enrich.gas = 0.001*n.enrich.co2
  
  E.tru[pos1] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # Maximum weight
  weight.max = E.ideal/E.tru

  # Logistic function
  L = weight.max - 0.98
  k = 267; x0 = 0.071
  # data.frame(weight.max)
  return(25*L/(1 + exp(-k * (pCO2.lean - x0))) + 1)
}

test.pco2 = 10^seq(from = -10, to = 2, by = 0.1)
weight.test = weight.fun2(test.pco2)
class = rep(0, length(test.pco2)); class[test.pco2 >= 0.15] = 1; class[test.pco2 >= 1] = 2
ggplot(filter(data.frame(x = test.pco2, y = weight.test, class) )) +
  geom_point(mapping = aes(x = x, y = y, color = (x < 0.015))) +
  scale_x_log10() + facet_wrap(~class, scales = 'free')

rm(test.pco2, weight.test, class)

# Calculate weight
GPar.all$weight3 = weight.fun3(GPar.all$pCO2.lean)

ggplot(filter(GPar.all, Energy.kJ.mol*weight3 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = weight3)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Amplified Weight')

ggplot(filter(GPar.all, Energy.kJ.mol*weight3 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Unweighted Energy')

ggplot(filter(GPar.all, Energy.kJ.mol*weight3 < 100)) +
  geom_point(mapping = aes(x = pCO2.lean, y = Energy.kJ.mol*weight3)) +
  facet_grid(~(pCO2.lean >= 0.015), scales = 'free_x') +
  scale_x_log10() + labs(y = 'Amplified Weighted Energy')

Multiplying the logarithmic term by a factor of 25 appears to be sufficiently large to adjust the energies without overshooting the weight.

rm(weight.fun, weight.fun2, weight.fun3, GPar.all)

Applying the penalty function directly to energy demand

weight.fun = function(pCO2.lean){
  # Ideal
  n.inlet = c(0.15, 0.85)
  n.lean = c(0.85, 0.015*0.85/(1 - 0.015))
  n.enrich = c(0.001*(1 - 0.015*0.85/(1 - 0.015)), 1 - 0.015*0.85/(1 - 0.015))
  
  E.ideal = sum(n.enrich*log(n.enrich/sum(n.enrich)) + 
                  n.lean*log(n.lean/sum(n.lean)) - 
                  n.inlet*log(n.inlet/sum(n.inlet)))

  # Actual: separate into 3 cases:
  E.tru = rep(x = 0, times = length(pCO2.lean))
  # Third case: if the lean gas pressure is above 1, i.e. it pressurized
  pos3 = (pCO2.lean >= 0.99)
  # Set the lean gas pressure to 0.999, 
  # then multiply the weight by the actual pressure to correct the energy; 
  # since the weight is divided by this energy, this means dividing by the pressure
  set.lean = 0.999
  n.enrich.co2 = (set.lean - 0.15)/(1 - set.lean)
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos3] = (- sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))) / pCO2.lean[pos3]

  # Second case: if the lean gas pressure is between 0.15 and 1, 
  # i.e. the CO2 was moved from the pure gas to the lean gas
  pos2 = (pCO2.lean >= 0.15 & pCO2.lean < 0.99)
  # For the mass balance to work, gas must have moved from the enriched stream to the lean gas
  n.enrich.co2 = (pCO2.lean[pos2] - 0.15)/(1 - pCO2.lean[pos2])
  n.lean = n.enrich.co2 + 0.15
  n.enrich.gas = 0.001*n.enrich.co2
  E.tru[pos2] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # First case: if the lean gas pressure is less than 0.15, i.e. some amount of capture happened
  pos1 = (pCO2.lean < 0.15)
  # Mathematically identical to the lean gas case, just adjusting the lean gas and enriched gas mass balance
  n.lean = pCO2.lean[pos1]*0.85/(1 - pCO2.lean[pos1])
  n.enrich.co2 = 0.15 - n.lean
  n.enrich.gas = 0.001*n.enrich.co2
  
  E.tru[pos1] = - sum(n.inlet*log(n.inlet/sum(n.inlet))) +
    0.85*log(0.85/(n.lean + 0.85)) +
    n.enrich.gas*log(n.enrich.gas/(n.enrich.gas + n.enrich.co2)) + 
    n.enrich.co2*log(n.enrich.co2/(n.enrich.gas + n.enrich.co2)) + 
    n.lean*log(n.lean/(n.lean + 0.85))
  
  # Maximum weight
  weight.max = E.ideal/E.tru

  # Logistic function
  L = weight.max - 0.98
  k = 267; x0 = 0.071
  # data.frame(weight.max)
  return(25*L/(1 + exp(-k * (pCO2.lean - x0))) + 1)
}

# Total energy demand - 4-stage process for simplicity
Energy.tot = function(k1, k2, beta1, beta2, A.tot, Na, pCO2.in, pCO2.out){
  # Constants
  z = 2; R = 8.314; T = 298; F = 96485; resolution = 151;
  # pCO2.in = 0.1; pCO2.out = 1
  xA.lim = c(0.025, 0.975)
  
  # 1 -> 2: Electrochemical oxidation (xA decrease to endpoint), constant DIC
  # Starting solution for initial guess: low P, high xA
  start.soln = data.frame(p.CO2 = pCO2.in, xA = max(xA.lim))
  start.soln$pH = pH.xA.pCO2.A.k.beta.Na(xA = start.soln$xA, P = start.soln$p.CO2, 
                                       At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  start.soln$DIC = DIC.xA.pCO2.pH.A.k.beta(xA = start.soln$xA, pCO2 = start.soln$p.CO2, pH = start.soln$pH, 
                                         A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  # Anode progress
  E.anode = data.frame(DIC = start.soln$DIC, xA = seq(from = start.soln$xA[1], to = min(xA.lim), length.out = resolution))
  # Loop to solve the ieration function
  loop = pH.it.guess.DIC.At.k.beta(pH.guess = start.soln$pH[1], xA.next = E.anode$xA[1], DIC = E.anode$DIC[1], 
                                       A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  for(i in 2:length(E.anode$DIC)){
    loop = c(loop, pH.it.guess.DIC.At.k.beta(pH.guess = loop[i-1], xA.next = E.anode$xA[i], DIC = E.anode$DIC[i], 
                                         A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na))
  }
  # Some iterations don't converge completely, leading to single points that deviated from the rest of the curve. This is characterized by a single point that is a local maxima or minimum. Endpoints are asusmed to be good
  loop.check.left = loop[1:(resolution-2)] - loop[2:(resolution-1)]
  loop.check.right = loop[2:(resolution-1)] - loop[3:(resolution)]
  # If the signs are different, then it is a local shift
  loop.pos = c(TRUE, (sign(loop.check.left) == sign(loop.check.right)), TRUE)
  for(pos in which(loop.pos == FALSE)){ # Take the average
    loop[pos] = (loop[pos-1] + loop[pos+1])/2
  }
  E.anode$pH = loop; 
  # Loop pCO2 calculation as well, since the pCO2 function relies on the previous point
  loop = pCO2.xA.pH.A.k.beta.Na(xA = E.anode$xA[1], pH = E.anode$pH[1],
                                At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, pCO2.prev = start.soln$p.CO2)
  for(i in 2:length(E.anode$DIC)){
    loop[i] = pCO2.xA.pH.A.k.beta.Na(xA = E.anode$xA[i], pH = E.anode$pH[i],
                                  At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, pCO2.prev = loop[i-1])
  }
  E.anode$p.CO2 = loop
  E.anode$q = abs(E.anode$xA - E.anode$xA[1])*A.tot*z*F # Coulombs
  
  # 3 -> 4: Electrochemical reduction (xA increase to endpoint), constant DIC
  # Starting solution for initial guess: high P, low xA
  stop.soln = data.frame(p.CO2 = pCO2.out, xA = min(xA.lim))
  stop.soln$pH = pH.xA.pCO2.A.k.beta.Na(xA = stop.soln$xA, P = stop.soln$p.CO2, 
                                       At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  stop.soln$DIC = DIC.xA.pCO2.pH.A.k.beta(xA = stop.soln$xA, pCO2 = stop.soln$p.CO2, pH = stop.soln$pH, 
                                         A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2)
  # Cathode progress
  E.cathode = data.frame(DIC = stop.soln$DIC[1], xA = seq(from = stop.soln$xA[1], to = max(xA.lim), length.out = resolution))
  # Loop to solve the ieration function
  loop = pH.it.guess.DIC.At.k.beta(pH.guess = stop.soln$pH[1], xA.next = E.cathode$xA[1], DIC = E.cathode$DIC[1], 
                                       A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
  for(i in 2:length(E.cathode$DIC)){
    loop = c(loop, pH.it.guess.DIC.At.k.beta(pH.guess = loop[i-1], xA.next = E.cathode$xA[i], DIC = E.cathode$DIC[i], 
                                         A.tot = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na))
  }
  # Some iterations don't converge completely, leading to single points that deviated from the rest of the curve. This is characterized by a single point that is a local maxima or minimum. Endpoints are asusmed to be good
  loop.check.left = loop[1:(resolution-2)] - loop[2:(resolution-1)]
  loop.check.right = loop[2:(resolution-1)] - loop[3:(resolution)]
  # If the signs are different, then it is a local shift
  loop.pos = c(TRUE, (sign(loop.check.left) == sign(loop.check.right)), TRUE)
  for(pos in which(loop.pos == FALSE)){ # Take the average
    loop[pos] = (loop[pos-1] + loop[pos+1])/2
  }
  E.cathode$pH = loop;
  # Loop pCO2 calculation as well, since the pCO2 function relies on the previous point
  loop = pCO2.xA.pH.A.k.beta.Na(xA = E.cathode$xA[1], pH = E.cathode$pH[1],
                                At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, pCO2.prev = stop.soln$p.CO2)
  for(i in 2:length(E.cathode$DIC)){
    loop[i] = pCO2.xA.pH.A.k.beta.Na(xA = E.cathode$xA[i], pH = E.cathode$pH[i],
                                  At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na, pCO2.prev = loop[i-1])
  }
  E.cathode$p.CO2 = loop
  E.cathode$q = abs(E.cathode$xA - E.cathode$xA[1])*A.tot*z*F # Coulombs
  
  # Equilibrium potential: Deviation from standard reduction potential
  E.anode$H = 10^-E.anode$pH
  E.anode$E = R*T/(z*F) * log( (1 - E.anode$xA)/E.anode$xA * 
                                   ((1 + beta1*E.anode$p.CO2 + beta2*E.anode$p.CO2^2)*k1*k2 + k1*E.anode$H + E.anode$H^2)/(k1*k2))
  E.cathode$H = 10^-E.cathode$pH
  E.cathode$E = R*T/(z*F) * log( (1 - E.cathode$xA)/E.cathode$xA * 
                                   ((1 + beta1*E.cathode$p.CO2 + beta2*E.cathode$p.CO2^2)*k1*k2 + k1*E.cathode$H + E.cathode$H^2)/(k1*k2))
  
  # Total energy
  E.cell = data.frame(q = E.anode$q, V = E.anode$E - E.cathode$E)
  # Only the positive energy demand
  E.cell = filter(E.cell, V > 0)
  len = length(E.cell$q)
  if(len == 0){
    E.cell = data.frame(q = rep(x = 0, times = 10), V = rep(x = 0, times = 10))
    len = 10
  }
  # E.anode$typ = "anode"; E.cathode$typ = "cathode"
  Energy.tot.sep = sum(0.5*(E.cell$V[2:len] + E.cell$V[1:(len-1)])*(E.cell$q[2:len] - E.cell$q[1:(len-1)]))
  
  ## Adjust the total energy by multiplying by the penalty function
  # Calculate the lean gas pressure
  # k1, k2, beta1, beta2, A.tot, Na, pCO2.in, pCO2.out
  p.lean = pCO2.lean(Na = Na, A = A.tot, beta1 = beta1, beta2 = beta2, k1 = k1, k2 = k2, pCO2.out = pCO2.out)
  penalty = weight.fun(pCO2.lean = p.lean)
  
  # Normalize by the total amount of carbon moved, i.e. units of kJ/mol
  DIC.capture = DIC.diff(Na = Na, A = A.tot, beta1 = beta1, beta2 = beta2, k1 = k1, k2 = k2, pCO2.in = pCO2.in, pCO2.out = pCO2.out)
  return(Energy.tot.sep*penalty/DIC.capture*1e-3)
}
# These equations are based on the framework for determining the CO2 flux as presented in Wilcox 2012.
Enhance.factor = function(pH, pCO2.in, A, k1, k2, beta1, beta2, pCO2){
  # Constants: general
  kw = 1e-14 # M^2
  kH = 3.4e-2; # M/atm
  z = 1 # OH- + CO2 = HCO3-
  # Constants: from Wilcox 2012
  Dco2 = 0.5e-5 # cm2/s, assume slowest due to high ionic strength
  kL = 0.1 # Assume fast mass transfer of typical range
  # Constants: average of Pocker 1997, Zeman 2007, Stolaroff 2008, Wilcox 2012
  k.rate = (6.03e3 + 6.745e3 + 8.5e3 + 12.1e3)/4
  # Constants: Lvov2012
  Doh = 5.2e-5 # cm2/s

  # Base concentration = OH + HQ- + 2Q--
  H = 10^-pH
  OH = kw/H
  base = OH + A*(2*k1*k2 + H*k1) / (H^2 + H*k1 + k1*k2*(1 + beta1*pCO2 + beta2*pCO2^2))
  
  # Interface CO2 concentration - assume 90% capture from the inlet
  CO2.int = 0.1*pCO2.in*kH
  
  # Hatta number: reaction rate / mass transfer rate
  Ha = sqrt(Dco2*base*k.rate)/kL
  # Instantaneous enhancement factor
  Ei = 1 + Doh*base / (z*Dco2*CO2.int)
  
  # return(c(Ei, Ha / tanh(Ha), Ha))
  # Check the extreme cases for E to simplify the equations
  if(Ha > 10*Ei){ # Instantaneous
    E = Ei
  } else if(Ha < Ei/2){ # Pseudo-1st order
    E = Ha / tanh(Ha)
  } else if(Ha > 3){ # 1st order
    E = Ha
  } else{ # No simplification - Solve the root that is less than Ei, as Ei is the upper bound
    x.guess = c(0.9, 0.95)*Ei
    for(i in 1:5){ # Newton's method
      y.guess = (Ha*(Ei - x.guess) / (Ei - 1)) / tanh(Ha*(Ei - x.guess) / (Ei - 1)) - x.guess
      slp.fit = (y.guess[1] - y.guess[2]) / (x.guess[1] - x.guess[2])
      E.guess = -y.guess[1]/slp.fit + x.guess[1]
      x.guess = c(0.975, 1.025)*E.guess
    }
    E = E.guess
  }
  #### Need to include order of magnitude for reaction rate with sorbent - use acid anhydride formation rate constants as estimates?
  return(E)
}

# Calculate the average kinetic driving force over the course of absorption (stage 4 -> 1)
kinetic.force = function(k1, k2, beta1, beta2, A.tot, Na, pCO2.in, pCO2.out){
  # Constants
  xA.lim = c(0.025, 0.975)
  kH = 3.4e-2; # M/atm
  # Calculate the pCO2 of the fully reduced species prior to equilibration with the gas
  out.pCO2 = pCO2.lean(Na = Na, A = A.tot, beta1 = beta1, beta2 = beta2, k1 = k1, k2 = k2, pCO2.out = pCO2.out)
  # If the minimum outlet pCO2 is greater than the target capture:
  # if(out.pCO2 > 0.1*pCO2.in | is.na(out.pCO2)){
  if(is.na(out.pCO2)){
    return(0)
  } else{
    # Calculate the pH at the start of desorption
    soln41 = data.frame(xA = max(xA.lim), p.CO2 = out.pCO2)
    # Solve pH with multiple cores
    soln41$pH = pH.xA.pCO2.A.k.beta.Na(xA = soln41$xA, P = soln41$p.CO2, 
                         At = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, Na = Na)
    soln41$E = Enhance.factor(pH = soln41$pH, pCO2.in = pCO2.in, A = A.tot, k1 = k1, k2 = k2, beta1 = beta1, beta2 = beta2, pCO2 = soln41$p.CO2)

    # Calculate the concentration difference between the interface and the bulk. Assuming 90% capture
    soln41$delC = (0.1*pCO2.in - out.pCO2)*kH
    # Flux: delC * kL * E, assume kL = 0.01 cm/s
    # Unit conversion: L to cm3, cm2 to m2
    flux = soln41$delC*soln41$E*0.01 * (1/1e3) * (100^2)
    # return(soln41)
    return(signif(flux, 5)) # Highest driving force at outlet
    # return(soln41)
  }
}

To work with GPareto, the two objective functions need to combined, and the input should be a matrix, not a dataframe. I account for this with a wrapper function to simplify the process.

PCET.obj.flu = function(inputs){
  # Inputs is a matrix where each row is an instance and each column is a specific variable:
  # From left to right, the columns are:
  # pka1, err.pka2, log10(A.tot), Na/A.tot
  # For the functions, the variables should be:
  # k1, k2, A.tot, Na
  # The use of log units and ratios helps alleviate resolution issues associated with spanning multiple orders of magnitude
  # The use of the error of pKa2 removes the correlation between the two variables
  
  # Storing the proper information.
  if(is.matrix(inputs)){
    dat = data.frame(k1 = 10^-inputs[,1],
                     k2 = 10^-(inputs[,1] + inputs[,2]),
                     A.tot = 10^inputs[,3],
                     Na = 10^inputs[,4]*10^inputs[,3])
  } else{
    # The optimization function sometimes stores as a vector instead of as a matrix if it is just a single point
    dat = data.frame(k1 = 10^-inputs[1],
                     k2 = 10^-(inputs[1] + inputs[2]),
                     A.tot = 10^inputs[3],
                     Na = 10^inputs[4]*10^inputs[3])
  }
  # The following conditions are assumed for PCET from flue gas
  beta1 = 0; beta2 = 0;
  pCO2.in = 0.15; pCO2.out = 1;
  
  # The functions require substantial computation, so each row has to be processed independently
  energy = c(); flux = c()
  for(i in 1:nrow(dat)){
    energy[i] = Energy.tot(k1 = dat$k1[i], k2 = dat$k2[i], 
                           beta1 = 0, beta2 = 0, 
                           A.tot = dat$A.tot[i], Na = dat$Na[i], 
                           pCO2.in = 0.15, pCO2.out = 1)
    flux[i] = kinetic.force(k1 = dat$k1[i], k2 = dat$k2[i], 
                            beta1 = 0, beta2 = 0, 
                            A.tot = dat$A.tot[i], Na = dat$Na[i], 
                            pCO2.in = 0.15, pCO2.out = 1)
  }
  # Obtain the negative of the flux so it is a minimization function for the optimization search
  return(c(energy, -flux)) 
}

Requirements for CO2 capture

A substantial fraction of points were not able to satisfy the 90% capture constraint, as noted by their negative CO2 flux. The first step is to see if the size of the search space can be reduced for future optimization to only the 90% capture conditions. This will be done by making a GP model of the kinetic rate, sampling points with a kinetic rate of 0 (signifying 90% capture), then marginalizating the probability that the result has positive flux.

The GP model sometimes does not converge because it is optimized using a genetic algorithm. This leads to a model that is unrepresentative. This function checks that the resulting model has adequate variance variability and outputs only models that make sense for the training data.

fill.sample.mod = function(GPar.data, input.name, output.name){
  # Calculate the GP model to use. 
  # Using the km function, but applies checks on the system to make sure that 
  # the model uncertainty matches expectations based on GP, ie. it did not
  # fail to converge.
  
  # Based on testing, the model is bad when the 10% percentile and 90% percentile 
  # of the standard deviation are of the same order of magnitude. This is easiest
  # checked if the difference between the 10th and 90th percentile
  # is larger than the difference between the 25th and 75th.
  pt10 = 1; pt90 = 1; pt25 = 1; pt75 = 1
  while(log10(pt90/pt10) <= log10(pt75/pt25)){
    mod.out = km(design = GPar.data[, input.name], response = GPar.data[, output.name], 
                 covtyp = 'gauss', # Gaussian uncertainty
                 optim.method = 'gen', # Genetic algorithm optimization
                 control = list(trace = FALSE, # Turn off tracking to simplify output
                                pop.size = 50), # Increase robustness
                 nugget = 1e-6, # Avoid eigenvalues of 0
                 )
    
    # Randomly sample 1000 points from the search space.
    pt = 1000; i = 1
    lims = range(GPar.data[,input.name[i]])
    samp = data.frame(runif(n = pt, min = lims[1], max = lims[2]))
    for(i in 2:length(input.name)){
      lims = range(GPar.data[,input.name[i]])
      samp[,i] = runif(n = pt, min = lims[1], max = lims[2])
    }
    names(samp) = input.name
    
    # Find model output to find the percentile ranks for this iteration
    res = predict(object = mod.out, newdata = samp, type = 'UK')
    pt10 = quantile(res$sd, 0.10); pt90 = quantile(res$sd, 0.90)
    pt25 = quantile(res$sd, 0.25); pt75 = quantile(res$sd, 0.75)
  }
  return(mod.out)
}

fill.sample.obj.nec = function(x, model.flux){
  # Evaluate the Kriging model function at x 
  res.flux = predict(object = model.flux, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')

  # Probability distribution fits a Gaussian distribution
  prob = pnorm(q = 0, mean = res.flux$mean, sd = res.flux$sd)
  
  # Variance based on propagation of errors, assuming independent measures
  sd = res.flux$sd

  # Objective result
  return(sd*(prob*(1-prob) + 0.25/9))
}

# Next point search function
fill.sample.nec = function(GPar.data){
  # Model
  mod.flux = fill.sample.mod(GPar.data = GPar.data, input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                             output.name = 'Flux.mol.m2s')
  
  # Next point by genetic algorithm
  GA.pred = ga(type = 'real-valued',
               fitness = function(x){fill.sample.obj.nec(x, model = mod.flux)},
               lower = c(2, 0, -2, -7), upper = c(13.5, 5.5, 0.5, 0.7),
               popSize = 50, maxiter = 50, run = 10, monitor = FALSE,
               parallel = 2)
  point.next = GA.pred@solution[1,]
  GPar.new = data.frame(pka1 = point.next[1],
                        pka2 = point.next[2],
                        logA = point.next[3],
                        Na.A = point.next[4])
  
  # True result for both the energy and kinetics to add this to the dataset
  res = PCET.obj.flu(inputs = point.next)
  GPar.new$Energy.kJ.mol = res[1]
  GPar.new$Flux.mol.m2s  = -res[2] # Flip sign because optimization function minimizes
  GPar.new$order = max(GPar.data$order) + 1

  # Also add the fitness to the dataframe for iteration cutoffs
  GPar.new$fit = max(GA.pred@fitness)
  
  # Return the new point and the fitness
  return(GPar.new)
}

Applying the functions with a looping iterative search

# Load data
GPar.all = read.csv(file = 'GPar_all_data.csv')
# Remove indices
GPar.all = GPar.all[, !(names(GPar.all) %in% c("X"))]

# First iteration to set the baseline of how much improvement there is to find.
newpoint = fill.sample.nec(GPar.data = GPar.all)
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
start.fit = newpoint$fit; 
current.fit = newpoint$fit; 

# Repeat for a maximum of 200 iterations, or until the fitness drops below 1/1000 of the starting fitness, 
# indicating little further improvement
max.iter = max(GPar.all$order) + 100
while(max(GPar.all$order) < max.iter & current.fit*1e3 > start.fit){
  GPar.all = rbind(GPar.all, newpoint[,names(newpoint) %in% names(GPar.all)])
  newpoint = fill.sample.nec(GPar.data = GPar.all)
  current.fit = newpoint$fit
}
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment

# Store the data
write.csv(GPar.all, file = 'GPar_90Cap_data.csv')
# Plot the results to show refinement
GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
ggplot(filter(GPar.all, Energy.kJ.mol < 100)) +
  geom_point(mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = (order > 200))) +
  facet_wrap(~(Flux.mol.m2s > 0), scales = 'free_x') +
  labs(x = 'CO2 flux at 90% capture (mol/m^2/s)', y = 'Energy demand (kJ/mol C)') +
  scale_color_manual(labels = c('Initial', 'Refinement'), values = c('red', 'blue'), name = '')


# Show on a log scale (separating the positive and negative fluxes) to see how low the magnitude of the flux can be
ggplot(filter(GPar.all, Energy.kJ.mol < 100)) +
  geom_point(mapping = aes(x = abs(Flux.mol.m2s), y = Energy.kJ.mol, color = (order > 200))) +
  facet_wrap(~(Flux.mol.m2s > 0), scales = 'free_x') +
  scale_x_log10() +
  labs(x = 'CO2 flux at 90% capture (mol/m^2/s)', y = 'Energy demand (kJ/mol C)') +
  scale_color_manual(labels = c('Initial', 'Refinement'), values = c('red', 'blue'), name = '')


# Display the characteristics of points with very high flux
g1 = ggplot() +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s > 1e-4), 
               mapping = aes(x = pka1, color = 'good')) +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s < 0), 
               mapping = aes(x = pka1, color = 'bad')) +
  labs(x = 'pKa1', y = 'Probability Density') + guides(color = FALSE) + 
  scale_color_manual(values = c('good' = 'blue', 'bad' = 'red'),
                     labels = c('good' = 'High Flux', 'bad' = 'No Capture'),
                     name = '', breaks = c('good', 'bad'))
g2 = ggplot() +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s > 1e-4),
               mapping = aes(x = pka1 + pka2, color = 'good')) +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s < 0), 
               mapping = aes(x = pka1 + pka2, color = 'bad')) +
  labs(x = 'pKa2', y = 'Probability Density') + guides(color = FALSE) + 
  scale_color_manual(values = c('good' = 'blue', 'bad' = 'red'),
                     labels = c('good' = 'High Flux', 'bad' = 'No Capture'),
                     name = '', breaks = c('good', 'bad'))
g3 = ggplot() +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s > 1e-4),
               mapping = aes(x = 10^logA, color = 'good')) +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s < 0), 
               mapping = aes(x = 10^logA, color = 'bad')) +
  labs(x = '[Quinone] (M)', y = 'Probability Density') + guides(color = FALSE) +
  scale_color_manual(values = c('good' = 'blue', 'bad' = 'red'),
                     labels = c('good' = 'High Flux', 'bad' = 'No Capture'),
                     name = '', breaks = c('good', 'bad'))
g4 = ggplot() +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s > 1e-4),
               mapping = aes(x = 10^logA*10^Na.A, color = 'good')) +
  geom_density(filter(GPar.all, Energy.kJ.mol < 100, Flux.mol.m2s < 0), 
               mapping = aes(x = 10^logA*10^Na.A, color = 'bad')) +
  labs(x = 'Additional Base (M)', y = 'Probability Density') +
  scale_x_log10() +
  scale_color_manual(values = c('good' = 'blue', 'bad' = 'red'),
                     labels = c('good' = 'High Flux', 'bad' = 'No Capture'),
                     name = '', breaks = c('good', 'bad'))
(g1 + g3) / (g2 + g4)


rm(g1, g2, g3, g4)

In addition to refining knowledge of the boundary where the flux is zero (90% capture), I show the distribution of “good” points (above 10^-4 mol/m2/s flux) and “bad” points (no flux). The distinct differences between the two suggests that high and low flux conditions are very distinct in their pKa and concentration profiles, but the amount of acid or base is not a substantial factor.

After performing the marginalization to determine if the search space can be constrained, the Pareto front will be re-calculated with this new information.

Based on the distributions of the high flux conditions compared to the no capture conditions, it is likely that the result falls near an optimum rather than any of the extremes of the sample region.

For marginalization, assume a uniform distribution. While this is unrealistic, it is just to establish a constraint on the bounds rather than to identify real compounds. Additionally, the interest is in removing the conditions that have a <5% likelihood of capturing >90% CO2, regardless of the other variables.

GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
mod.flux = fill.sample.mod(GPar.data = GPar.all, input.name = c('pka1', 'pka2', 'logA', 'Na.A'),
                           output.name = 'Flux.mol.m2s')

# Set up the marginalization
resolution = 50; MCsamp = 2000
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)
# Note: for the Na/A ratio, the interest is in the order of magnitude shifts, not the absolute shifts, going down to 10^-7.
# Since it is being tested for both positive and negative values, but they are of similar order of magnitude, half will be dedicated to each side

# Set the ranges
kin.constrain = data.frame(pka1 = seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                           pka2 = seq(from = pka2.rng[1], to = pka2.rng[2], length.out = resolution),
                           logA = seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                           Na.A = seq(from = Na.A.rng[1], to = Na.A.rng[2], length.out = resolution),
                           p.pka1 = NaN, p.pka2 = NaN, p.logA = NaN, p.Na.A = NaN, # Probability acceptance median
                           l.pka1 = NaN, l.pka2 = NaN, l.logA = NaN, l.Na.A = NaN, # lower bound
                           h.pka1 = NaN, h.pka2 = NaN, h.logA = NaN, h.Na.A = NaN) # upper bound
lower = 0.25; upper = 0.75

for(i in 1:resolution){
  # pka1
  fill.frame = data.frame(pka1 = kin.constrain$pka1[i],
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean - 1e-5, sd = res$sd)
  kin.constrain$p.pka1[i] = mean(fill.frame$p.accept)
  kin.constrain$h.pka1[i] = quantile(fill.frame$p.accept, probs = upper)
  kin.constrain$l.pka1[i] = quantile(fill.frame$p.accept, probs = lower)

  # pka2
  fill.frame = data.frame(pka2 = kin.constrain$pka2[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean - 1e-5, sd = res$sd)
  kin.constrain$p.pka2[i] = mean(fill.frame$p.accept)
  kin.constrain$h.pka2[i] = quantile(fill.frame$p.accept, probs = upper)
  kin.constrain$l.pka2[i] = quantile(fill.frame$p.accept, probs = lower)

  # log Quinone
  fill.frame = data.frame(logA = kin.constrain$logA[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean - 1e-5, sd = res$sd)
  kin.constrain$p.logA[i] = mean(fill.frame$p.accept)
  kin.constrain$h.logA[i] = quantile(fill.frame$p.accept, probs = upper)
  kin.constrain$l.logA[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # Na/A
  fill.frame = data.frame(Na.A = kin.constrain$Na.A[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]))
  res = predict(object = mod.flux, newdata = fill.frame - 1e-5, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean, sd = res$sd)
  kin.constrain$p.Na.A[i] = mean(fill.frame$p.accept)
  kin.constrain$h.Na.A[i] = quantile(fill.frame$p.accept, probs = upper)
  kin.constrain$l.Na.A[i] = quantile(fill.frame$p.accept, probs = lower)
}
kin.constrain
g1 = ggplot(kin.constrain) +
  geom_line(mapping = aes(x = pka1, y = p.pka1)) +
  geom_line(mapping = aes(x = pka1, y = h.pka1), linetype = 2) +
  geom_line(mapping = aes(x = pka1, y = l.pka1), linetype = 2) +
  labs(x = 'pKa1', y = 'Probability of >90% Capture')
g2 = ggplot(kin.constrain) +
  geom_line(mapping = aes(x = pka2, y = p.pka2)) +
  geom_line(mapping = aes(x = pka2, y = h.pka2), linetype = 2) +
  geom_line(mapping = aes(x = pka2, y = l.pka2), linetype = 2) +
  labs(x = 'pKa2 - pKa1', y = 'Probability of >90% Capture')
g3 = ggplot(kin.constrain) +
  geom_line(mapping = aes(x = 10^logA, y = p.logA)) +
  geom_line(mapping = aes(x = 10^logA, y = h.logA), linetype = 2) +
  geom_line(mapping = aes(x = 10^logA, y = l.logA), linetype = 2) +
  labs(x = 'Quinone Concentration', y = 'Probability of >90% Capture') +
  scale_x_log10()
g4 = ggplot(kin.constrain) +
  geom_line(mapping = aes(x = 10^Na.A, y = p.Na.A)) +
  geom_line(mapping = aes(x = 10^Na.A, y = h.Na.A), linetype = 2) +
  geom_line(mapping = aes(x = 10^Na.A, y = l.Na.A), linetype = 2) +
  scale_x_log10() +
  labs(x = 'Na/Quinone Concentration Ratio', y = 'Probability of >90% Capture')

(g1 + g3) / (g2 + g4)

rm(g1, g2, g3, g4)

Dotted lines represent the asymmetric 50% confidence interval, i.e. 50% of outcomes where the other variables are randomly selected will fall between those two lines. None of the partial dependence probability curves indicate an unambiguous region of the search space that can be omitted, it does indicate some interesting features:

While these cannot be used to remove areas of the search space from sampling, it does give some indication of what to consider when comparing options.

One possible improvement to this presentation is to marginalize against 2 variables instead of just 1. It is likely that the combination of both pKas or of both concentrations is what matters, and this may provide more insight into restricting the space further since many inputs are co-correlated.

GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
mod.flux = fill.sample.mod(GPar.data = GPar.all, input.name = c('pka1', 'pka2', 'logA', 'Na.A'),
                           output.name = 'Flux.mol.m2s')

# Set up the marginalization
resolution = 35; MCsamp = 1500
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)
lower = 0.25; upper = 0.75

# Set up the grid search
pkaX.grid = expand.grid(seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                        seq(from = pka2.rng[1], to = pka2.rng[2], length.out = resolution))
pkaX.grid = pkaX.grid[,c(1:2)]
names(pkaX.grid) = c('pka1', 'pka2')
pkaX.grid$p = NaN; pkaX.grid$l = NaN; pkaX.grid$s = NaN # Probability and the high and low

# Note: for the Na/A ratio, the interest is in the order of magnitude shifts, not the absolute shifts, going down to 10^-7.
# Since it is being tested for both positive and negative values, but they are of similar order of magnitude, half will be dedicated to each side
conc.grid = expand.grid(seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                        seq(from = Na.A.rng[1], to = Na.A.rng[2], length.out = resolution))
conc.grid = conc.grid[,c(1:2)]
names(conc.grid) = c('logA', 'Na.A')
conc.grid$p = NaN; conc.grid$l = NaN; conc.grid$s = NaN # Probability and the high and low

# Loop
for(i in 1:nrow(pkaX.grid)){
  # pKa grid
  fill.frame = data.frame(pka1 = pkaX.grid$pka1[i],
                          pka2 = pkaX.grid$pka2[i],
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean, sd = res$sd)
  pkaX.grid$p[i] = mean(fill.frame$p.accept)
  pkaX.grid$h[i] = quantile(fill.frame$p.accept, probs = upper)
  pkaX.grid$l[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # Concentration grid
  fill.frame = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = conc.grid$logA[i],
                          Na.A = conc.grid$Na.A[i])
  res = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = pnorm(q = 0, mean = res$mean, sd = res$sd)
  conc.grid$p[i] = mean(fill.frame$p.accept)
  conc.grid$h[i] = quantile(fill.frame$p.accept, probs = upper)
  conc.grid$l[i] = quantile(fill.frame$p.accept, probs = lower)
}
# Input variables: pKa
g1 = ggplot(pkaX.grid) +
  geom_tile(mapping = aes(x = pka1, y = pka2, fill = p)) +
  labs(x = 'pka1', y = '', fill = 'P[Flux > 0]', subtitle = 'Mean') +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5) +
  guides(fill = FALSE)
g2 = ggplot(pkaX.grid) +
  geom_tile(mapping = aes(x = pka1, y = pka2, fill = h)) +
  labs(x = '', y = '', fill = 'P[Flux > 0]', subtitle = '75th Percentile') +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g3 = ggplot(pkaX.grid) +
  geom_tile(mapping = aes(x = pka1, y = pka2, fill = l)) +
  labs(x = '', y = 'pka2 - pka1', fill = 'P[Flux > 0]', subtitle = '25th Percentile') +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5) +
  guides(fill = FALSE)
g3 + g1 + g2


# Input variables: Concentrations
g1 = ggplot(conc.grid) +
  geom_raster(mapping = aes(x = logA, y = Na.A, fill = p)) +
  labs(x = 'log10 [Quinone]', y = '', fill = 'P[Flux > 0]', subtitle = 'Mean') +
  scale_y_log10() + guides(fill = FALSE) +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g2 = ggplot(conc.grid) +
  geom_raster(mapping = aes(x = logA, y = Na.A, fill = l)) +
  labs(x = '', y = 'log [pH Corrector]/[Quinone]', fill = 'P[Flux > 0]', subtitle = '25th Percentile') +
  scale_y_log10() + guides(fill = FALSE) +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g3 = ggplot(conc.grid) +
  geom_raster(mapping = aes(x = logA, y = Na.A, fill = h)) +
  labs(x = '', y = '', fill = 'P[Flux > 0]', subtitle = '75th Percentile') +
  scale_y_log10() +
  scale_fill_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g2 + g1 + g3


# Natural variables: pka
g1 = ggplot(pkaX.grid) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = p)) +
  geom_hline(yintercept = c(10.3, 6.3)) +
  geom_vline(xintercept = c(10.3, 6.3)) +
  labs(x = 'pka1', y = '', color = 'P[Flux > 0]', subtitle = 'Mean') +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5) +
  guides(color = FALSE)
g2 = ggplot(pkaX.grid) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = h)) +
  geom_hline(yintercept = c(10.3, 6.3)) +
  geom_vline(xintercept = c(10.3, 6.3)) +
  labs(x = '', y = '', color = 'P[Flux > 0]', subtitle = '75th Percentile') +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g3 = ggplot(pkaX.grid) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = l)) +
  geom_hline(yintercept = c(10.3, 6.3)) +
  geom_vline(xintercept = c(10.3, 6.3)) +
  labs(x = '', y = 'pka2', color = 'P[Flux > 0]', subtitle = '25th Percentile') +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5) +
  guides(color = FALSE)
g3 + g1 + g2


# Input variables: Concentrations
g1 = ggplot(conc.grid) +
  geom_point(mapping = aes(x = 10^logA, y = 10^logA*10^Na.A, color = p)) +
  labs(x = '[Quinone]', y = '', color = 'P[Flux > 0]', subtitle = 'Mean') +
  scale_y_log10() + scale_x_log10() + guides(color = FALSE) +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g2 = ggplot(conc.grid) +
  geom_point(mapping = aes(x = 10^logA, y = 10^logA*10^Na.A, color = l)) +
  labs(x = '', y = 'pH Corrector', color = 'P[Flux > 0]', subtitle = '25th Percentile') +
  scale_y_log10() + scale_x_log10() + guides(color = FALSE) +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g3 = ggplot(conc.grid) +
  geom_point(mapping = aes(x = 10^logA, y = 10^logA*10^Na.A, color = h)) +
  labs(x = '', y = '', color = 'P[Flux > 0]', subtitle = '75th Percentile') +
  scale_y_log10() + scale_x_log10() +
  scale_color_gradient2(limits = c(0, 1), 
                       low="navy", mid="white", high="red", midpoint = 0.5)
g2 + g1 + g3


rm(g1, g2, g3)

What is evident from these 2D partial component probability plots is that there are regions where the probability is very low, but they are not clearly delineated by single variable cutoffs. The only case where there might be a cutoff is the concentration of quinone, where low (<0.1 M) concentrations lead to generally low probabilities of capture.

Insights from these 2D plots:

Refinement to optimal conditions

In addition to refining the model close to 0 to separate the conditions that are viable and inviable, the above process found some points that were previously unexplored which outperformed the Pareto front. Therefore, the Pareto front needs to be updated.

# Load data
GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
GPar.front = read.csv(file = 'GPar_fnt_data.csv')
# Compare the matrices of just the outputs - need as a matrix
test = as.matrix(GPar.all[GPar.all$Flux.mol.m2s > 0,names(GPar.all) %in% c('Energy.kJ.mol', 'Flux.mol.m2s')])
# For comparison, need both to minimize
test[,2] = -test[,2]

par.front = t(nondominated_points(points = t(test)))
par.front[,2] = -par.front[,2]
ggplot() +
  geom_vline(xintercept = 0.1*max(GPar.front$Flux.mol.m2s), color = 'black', linetype = 3) +
  geom_point(filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100),
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  # New front
  geom_line(data.frame(par.front), mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'new')) +
  geom_point(data.frame(par.front), mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'new')) +
  # Old front
  geom_line(GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'old')) +
  geom_point(GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'old')) +
  labs(x = 'CO2 flux (mol/m2/s)', y = 'Energy Demand (kJ/mol C)') +
  scale_color_manual(values = c('new' = 'red', 'old' = 'cyan'), 
                     labels = c('new' = 'New Front', 'old' = 'Old Front'),
                     name = '')

  

# Identify the conditions leading to the Pareto front
GPar.front = filter(GPar.all, Energy.kJ.mol %in% par.front[,1], Flux.mol.m2s %in% par.front[,2])
GPar.front = GPar.front[,!names(GPar.front) %in% 'X']
write.csv(GPar.front, file = 'GPar_fnt_data_90Cap.csv')

The energy target for CO2 capture from flue gas is approximately 25-30 kJe/mol C to achieve a < 35% increase in cost relative to a power plant not capturing carbon. The majority of the Pareto front satisfies this criteria, and the points that do not are still relatively low (up to 37 kJe/mol C) and competitive with temperature-swing absorption. The entire Pareto front also falls entirely above 10% of the maximum flux (vertical dotted line), suggesting that the flux does not have substantial variability. The selection criteria is therefore going to be all points that meet both an energy and flux cutoff threshold set by the 1-variable optima. To give some amount of tolerance, the flux cutoff is 10% of the maximum flux, and the energy cutoff is 40 kJ/mol C.

Based on prior tests with mathematical test functions, this type of criteria is both robust to modeling and converges relatively quickly. An initial pass on the inputs conditions that meet this criteria:

# The energy GP model has difficulty converging due to nonzero eigenvalues
# This is corrected with a higher nugget (enforced single variable variance) term
# Since energy and flux have different orders of magnitude, this will only be enforced for the energy GP model;
# the flux values are too small compared to the necessary nugget

fill.sample.ener = function(GPar.data, input.name, output.name){
  # Calculate the GP model to use. 
  # Using the km function, but applies checks on the system to make sure that 
  # the model uncertainty matches expectations based on GP, ie. it did not
  # fail to converge.
  
  # Based on testing, the model is bad when the 10% percentile and 90% percentile 
  # of the standard deviation are of the same order of magnitude. This is easiest
  # checked if the difference between the 10th and 90th percentile
  # is larger than the difference between the 25th and 75th.
  pt10 = 1; pt90 = 1; pt25 = 1; pt75 = 1
  while(log10(pt90/pt10) <= log10(pt75/pt25)){
    mod.out = km(design = GPar.data[, input.name], response = log10(GPar.data[, output.name]), 
                 covtyp = 'gauss', # Gaussian uncertainty
                 optim.method = 'gen', # Genetic algorithm optimization
                 control = list(trace = FALSE), # Turn off tracking to simplify output
                                # pop.size = 50), # Increase robustness
                 nugget = 5e-2, # Avoid eigenvalues of 0
                 )
    
    # Randomly sample 1000 points from the search space.
    pt = 1000; i = 1
    lims = range(GPar.data[,input.name[i]])
    samp = data.frame(runif(n = pt, min = lims[1], max = lims[2]))
    for(i in 2:length(input.name)){
      lims = range(GPar.data[,input.name[i]])
      samp[,i] = runif(n = pt, min = lims[1], max = lims[2])
    }
    names(samp) = input.name
    
    # Find model output to find the percentile ranks for this iteration
    res = predict(object = mod.out, newdata = samp, type = 'UK')
    pt10 = quantile(res$sd, 0.10); pt90 = quantile(res$sd, 0.90)
    pt25 = quantile(res$sd, 0.25); pt75 = quantile(res$sd, 0.75)
  }
  return(mod.out)
}
GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
# Define the cutoff values
E.cutof = log10(40); #kJ/mol C
F.cutof = 0.1*max(GPar.all$Flux.mol.m2s)

# Marginalization
mod.flux = fill.sample.mod(GPar.data = GPar.all, input.name = c('pka1', 'pka2', 'logA', 'Na.A'),
                           output.name = 'Flux.mol.m2s')
mod.ener = fill.sample.ener(GPar.data = GPar.all,
                            input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                            output.name = 'Energy.kJ.mol')

# Set up the marginalization
resolution = 50; MCsamp = 2000
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

# Set the ranges
pre.optim = data.frame(pka1 = seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                           pka2 = seq(from = pka2.rng[1], to = pka2.rng[2], length.out = resolution),
                           logA = seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                           Na.A = seq(from = Na.A.rng[1], to = Na.A.rng[2], length.out = resolution),
                           p.pka1 = NaN, p.pka2 = NaN, p.logA = NaN, p.Na.A = NaN, # Probability acceptance median
                           l.pka1 = NaN, l.pka2 = NaN, l.logA = NaN, l.Na.A = NaN, # lower bound
                           h.pka1 = NaN, h.pka2 = NaN, h.logA = NaN, h.Na.A = NaN) # upper bound
lower = 0.25; upper = 0.75

for(i in 1:resolution){
  # pka1
  fill.frame = data.frame(pka1 = pre.optim$pka1[i],
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pre.optim$p.pka1[i] = mean(fill.frame$p.accept)
  pre.optim$h.pka1[i] = quantile(fill.frame$p.accept, probs = upper)
  pre.optim$l.pka1[i] = quantile(fill.frame$p.accept, probs = lower)

  # pka2
  fill.frame = data.frame(pka2 = pre.optim$pka1[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pre.optim$p.pka2[i] = mean(fill.frame$p.accept)
  pre.optim$h.pka2[i] = quantile(fill.frame$p.accept, probs = upper)
  pre.optim$l.pka2[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # log Quinone
  fill.frame = data.frame(logA = pre.optim$logA[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pre.optim$p.logA[i] = mean(fill.frame$p.accept)
  pre.optim$h.logA[i] = quantile(fill.frame$p.accept, probs = upper)
  pre.optim$l.logA[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # Na/A
  fill.frame = data.frame(Na.A = pre.optim$Na.A[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]))
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pre.optim$p.Na.A[i] = mean(fill.frame$p.accept)
  pre.optim$h.Na.A[i] = quantile(fill.frame$p.accept, probs = upper)
  pre.optim$l.Na.A[i] = quantile(fill.frame$p.accept, probs = lower)
}
# Function variables
g1 = ggplot(pre.optim) +
  geom_line(mapping = aes(x = pka1, y = p.pka1)) +
  geom_line(mapping = aes(x = pka1, y = h.pka1), linetype = 2) +
  geom_line(mapping = aes(x = pka1, y = l.pka1), linetype = 2) +
  labs(x = 'pka1', y = 'P[Optimal]')
g2 = ggplot(pre.optim) +
  geom_line(mapping = aes(x = pka2, y = p.pka2)) +
  geom_line(mapping = aes(x = pka2, y = h.pka2), linetype = 2) +
  geom_line(mapping = aes(x = pka2, y = l.pka2), linetype = 2) +
  labs(x = 'pka2 - pka1', y = 'P[Optimal]')
(g1 / g2)


g3 = ggplot(pre.optim) +
  geom_line(mapping = aes(x = 10^logA, y = p.logA)) +
  geom_line(mapping = aes(x = 10^logA, y = h.logA), linetype = 2) +
  geom_line(mapping = aes(x = 10^logA, y = l.logA), linetype = 2) +
  labs(x = '[Quinone]', y = 'P[Optimal]') +
  scale_x_log10()
g4 = ggplot(pre.optim) +
  geom_line(mapping = aes(x = 10^Na.A, y = p.Na.A)) +
  geom_line(mapping = aes(x = 10^Na.A, y = h.Na.A), linetype = 2) +
  geom_line(mapping = aes(x = 10^Na.A, y = l.Na.A), linetype = 2) +
  labs(x = '[pH Correctant] / [Quinone]', y = 'P[Optimal]') +
  scale_x_log10()
(g3 / g4)

# Set up the marginalization
resolution = 35; MCsamp = 1500
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

# Set up the grid search
pkaX.grid = expand.grid(seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                        seq(from = pka2.rng[1], to = pka2.rng[2], length.out = resolution))
pkaX.grid = pkaX.grid[,c(1:2)]
names(pkaX.grid) = c('pka1', 'pka2')
pkaX.grid$p = NaN; pkaX.grid$l = NaN; pkaX.grid$s = NaN # Probability and the high and low

# Note: for the Na/A ratio, the interest is in the order of magnitude shifts, not the absolute shifts, going down to 10^-7.
# Since it is being tested for both positive and negative values, but they are of similar order of magnitude, half will be dedicated to each side
conc.grid = expand.grid(seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                        seq(from = Na.A.rng[1], to = Na.A.rng[2], length.out = resolution))
conc.grid = conc.grid[,c(1:2)]
names(conc.grid) = c('logA', 'Na.A')
conc.grid$p = NaN; conc.grid$l = NaN; conc.grid$s = NaN # Probability and the high and lowlower = 0.25; upper = 0.75

for(i in 1:nrow(pkaX.grid)){
  # pka1
  fill.frame = data.frame(pka1 = pkaX.grid$pka1[i],
                          pka2 = pkaX.grid$pka2[i],
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pkaX.grid$p[i] = mean(fill.frame$p.accept)
  pkaX.grid$h[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = upper)
  pkaX.grid$l[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = lower)

  # pka2
  fill.frame = data.frame(pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          logA = conc.grid$logA[i],
                          Na.A = conc.grid$Na.A[i])
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  conc.grid$p[i] = mean(fill.frame$p.accept)
  conc.grid$h[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = upper)
  conc.grid$l[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = lower)
}
lim = c(0, ceiling(max(pkaX.grid$h)*10)/10); mid = mean(lim)
# pKa plot: Natural variables
g1 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_hline(yintercept = c(6.3, 10.3)) + geom_vline(xintercept = c(6.3, 10.3)) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = l)) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = '25th Percentile') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g2 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_hline(yintercept = c(6.3, 10.3)) + geom_vline(xintercept = c(6.3, 10.3)) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = p)) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = 'Mean') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g3 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_hline(yintercept = c(6.3, 10.3)) + geom_vline(xintercept = c(6.3, 10.3)) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = h)) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = '75th Percentile') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey'))
g1 + g2 + g3


# Concentration plot: Natural variables
lim = c(0, ceiling(max(conc.grid$h)*10)/10); mid = mean(lim)
g1 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = l)) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = '25th Percentile') +
  scale_x_log10() + scale_y_log10() + 
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g2 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = p)) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = 'Mean') +
  scale_x_log10() + scale_y_log10() + 
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g3 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = h)) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = '75th Percentile') +
  scale_x_log10() + scale_y_log10() + 
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey'))
g1 + g2 + g3

rm(g1, g2, g3)

2D marginals suggest that the pKas between the two carbonate pKas (6.3 and 10.3) lead to the highest mean probability of being optimal, although this region has a very large variance. This is also the region where it is most likely to not yield enough capture, for instance.

fill.sample.obj.opt = function(x, model.flux, model.ener){
  # Evaluate the Kriging model function at x 
  res.flux = predict(object = model.flux, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')
  res.ener = predict(object = model.ener, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')

  # Probability distribution fits a Gaussian distribution.
  # Want the probability that the energy is below 40 kJ/mol C, 
  # flux is faster than 10% of the maximum (which still meets the energy criteria)
  E.cutof = log10(40); #kJ/mol C, log scale to account for multiple order of magnitude span
  F.cutof = 0.1*max(filter(GPar.all, Energy.kJ.mol < 40)$Flux.mol.m2s)

  prob = c(1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd) *
             pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
           )
  
  # Variance based on propagation of errors, assuming independent measures.
  # Since the optimization looks for relative differences, the square root is not necessary
  sd = (res.flux$sd^2 * res.ener$mean^2 + res.ener$sd^2 * res.flux$mean^2)

  # Acquisition function result. Weight the probability slightly such that the maximum is 
  # 2 orders of magnitude higher than the minimum (and the minimum is not zero)
  # Given the number of points already collected, favor exploitation over exploration.
  return(sd*(prob*(1-prob) + 0.25/99))
}

# Next point search function
fill.sample.opt = function(GPar.data){
  # Models
  mod.flux = fill.sample.mod(GPar.data = GPar.data, input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                             output.name = 'Flux.mol.m2s')
  # Energy model has substantial outliers above 1e3 kJ/mol that skew the model; 
  # a more accurate model is found when restricted
  mod.ener = fill.sample.ener(GPar.data = GPar.data, 
                              input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                              output.name = 'Energy.kJ.mol')

  # Next point by genetic algorithm
  GA.pred = ga(type = 'real-valued',
               fitness = function(x){fill.sample.obj.opt(x, model.flux = mod.flux, model.ener = mod.ener)},
               lower = c(2, 0, -2, -7), upper = c(13.5, 5.5, 0.5, 0.7),
               popSize = 50, maxiter = 50, run = 10, monitor = FALSE,
               parallel = 2)
  point.next = GA.pred@solution[1,]
  GPar.new = data.frame(pka1 = point.next[1],
                        pka2 = point.next[2],
                        logA = point.next[3],
                        Na.A = point.next[4])
  
  # True result for both the energy and kinetics to add this to the dataset
  res = PCET.obj.flu(inputs = point.next)
  GPar.new$Energy.kJ.mol = res[1]
  GPar.new$Flux.mol.m2s  = -res[2] # Flip sign because optimization function minimizes
  GPar.new$order = max(GPar.data$order) + 1

  # Also add the fitness to the dataframe for iteration cutoffs
  GPar.new$fit = max(GA.pred@fitness)
  
  # Return the new point and the fitness
  return(GPar.new)
}

Applying the functions with a looping iterative search

# Load data
GPar.all = read.csv(file = 'GPar_90Cap_data.csv')
# Remove indices
GPar.all = GPar.all[, !(names(GPar.all) %in% c("X"))]

# First iteration to set the baseline of how much improvement there is to find.
newpoint = fill.sample.opt(GPar.data = GPar.all)
start.fit = newpoint$fit; 
current.fit = newpoint$fit; 

# Repeat for a maximum of 200 iterations, or until the fitness drops below 1/1000 of the starting fitness, 
# indicating little further improvement
max.iter = max(GPar.all$order) + 100
while(max(GPar.all$order) < max.iter & current.fit*1e3 > start.fit){
  GPar.all = rbind(GPar.all, newpoint[,names(newpoint) %in% names(GPar.all)])
  newpoint = fill.sample.opt(GPar.data = GPar.all)
  current.fit = newpoint$fit
}

# Store the data
write.csv(GPar.all, file = 'GPar_90CapOpt_data.csv')
# Updated Pareto front
test = as.matrix(GPar.all[GPar.all$Flux.mol.m2s > 0,names(GPar.all) %in% c('Energy.kJ.mol', 'Flux.mol.m2s')])
# For the Pareto front determination, need both to minimize
test[,2] = -test[,2]
par.front = t(nondominated_points(points = t(test)))
par.front[,2] = -par.front[,2]
# Identify the conditions leading to the Pareto front
GPar.front = filter(GPar.all, Energy.kJ.mol %in% par.front[,1], Flux.mol.m2s %in% par.front[,2])
GPar.front = GPar.front[,!names(GPar.front) %in% 'X']
write.csv(GPar.front, file = 'GPar_fnt_data_90CapOpt.csv')
GPar.all = read.csv(file = 'GPar_90CapOpt_data.csv')
GPar.front = read.csv(file = 'GPar_fnt_data_90CapOpt.csv')

ggplot() +
  # Bounds
  geom_hline(yintercept =  40, linetype = 2) +
  geom_vline(xintercept = max(filter(GPar.all, Energy.kJ.mol < 40)$Flux.mol.m2s)*0.1, linetype = 2) +
  # Data
  geom_point(data = filter(GPar.all, Flux.mol.m2s > -0.1, Energy.kJ.mol < 100, order <= 300), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  geom_point(data = filter(GPar.all, Flux.mol.m2s > -0.1, Energy.kJ.mol < 100, order > 300), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'cyan') +
  facet_grid(.~Flux.mol.m2s > 0, scales = 'free_x') +
  geom_point(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  geom_line(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  labs(x = 'CO2 Flux (mol/m2/s)', y = 'Energy (kJ/mol C)')


ggplot() +
  # Bounds
  geom_hline(yintercept =  40, linetype = 2) +
  geom_vline(xintercept = max(filter(GPar.all, Energy.kJ.mol < 40)$Flux.mol.m2s)*0.1, linetype = 2) +
  # Data
  geom_point(data = filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100, order <= 300), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  geom_point(data = filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100, order > 300), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'cyan') +
  geom_point(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  geom_line(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  labs(x = 'CO2 Flux (mol/m2/s)', y = 'Energy (kJ/mol C)')

NA
NA
# Compare to brute force search
GPar.comp = read.csv(file = 'SorbentActivation-2e-MonteCarlo-HullPerimeterDistance-v3-beta2-0e0.csv')

# Updated Pareto front
test = as.matrix(GPar.comp[GPar.comp$DIC.flux > 0,names(GPar.comp) %in% c('Energy.sep', 'DIC.flux')])
# For the Pareto front determination, need both to minimize
test[,2] = -test[,2]
par.front = t(nondominated_points(points = t(test)))
par.front[,2] = -par.front[,2]
# Identify the conditions leading to the Pareto front
GPar.compfront = filter(GPar.comp, Energy.sep %in% par.front[,1], DIC.flux %in% par.front[,2])
GPar.compfront = GPar.compfront[,!names(GPar.compfront) %in% 'X']

# Zoom on optimal region
ggplot() +
  # New method
  geom_point(data = filter(GPar.all, Flux.mol.m2s > max(filter(GPar.all, Energy.kJ.mol < 40)$Flux.mol.m2s)*0.1,
                           Energy.kJ.mol < 40), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  geom_point(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  geom_line(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'red') +
  
  # Brute force search
  geom_point(data = filter(GPar.comp, DIC.flux > max(filter(GPar.all, Energy.kJ.mol < 40)$Flux.mol.m2s)*0.1,
                           Energy.sep < 40), 
             mapping = aes(x = DIC.flux, y = Energy.sep), color = 'cyan', shape = 2) +
  geom_point(data = GPar.compfront, mapping = aes(x = DIC.flux, y = Energy.sep), color = 'purple', shape = 2) +
  geom_line(data = GPar.compfront, mapping = aes(x = DIC.flux, y = Energy.sep), color = 'purple') +

  labs(x = 'CO2 Flux (mol/m2/s)', y = 'Energy (kJ/mol C)') +
  scale_x_log10()


# Map the Pareto fronts onto the pka and concentration axes
ggplot() +
  # Calculated optima
  geom_point(data = GPar.front, mapping = aes(x = pka1, y = pka1 + pka2, color = 'bayes')) +
  geom_point(data = GPar.compfront, mapping = aes(x = -log10(k1), y = -log10(k2), color = 'rsamp')) +
  # True data
  geom_point(filter(quinone.data, Pka.2 > 7.5, Pka.1 > 3), 
             mapping = aes(x = Pka.1, y = Pka.2, color = 'true'), alpha = 0.5) +
  geom_path(data = data.frame(x = c(7, 14), y = c(7, 14)),
            mapping = aes(x = x, y = y), color = 'black', linetype = 2) +
  geom_path(data = data.frame(x = c(3, 14), y = c(3, 14)+5.5),
            mapping = aes(x = x, y = y), color = 'black', linetype = 2) +
  
  scale_color_manual(values = c('bayes' = 'red', 'rsamp' = 'blue', 'true' = 'black'),
                     labels = c('bayes' = 'Exploit + Explore', 'rsamp' = 'Exploit only', 
                                'true' = 'Known Measurements'),
                     name = '') +
  labs(x = expression('p'*italic(K)['a,1']), y = expression('p'*italic(K)['a,2'])) +
  scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))


ggplot() +
  geom_point(data = GPar.front, mapping = aes(x = 10^logA, y = 10^logA * 10^Na.A, color = 'bayes')) +
  geom_point(data = GPar.compfront, mapping = aes(x = A, y = abs(Na), color = 'rsamp')) +
  scale_color_manual(values = c('bayes' = 'red', 'rsamp' = 'blue'),
                     labels = c('bayes' = 'Exploit + Explore', 'rsamp' = 'Exploit only'),
                     name = '') +
  labs(x = '{Quinone}', y = '{NaOH}') +
  scale_x_log10() + scale_y_log10()

Filtered random sampling (exploitation only) finds more points close to the Pareto front but does not describe the full boundary, instead treating the entire region as if it were optimal. Additionally, the constraints on the search were different, so it is difficult to compare the optima.

However, this illustrates that the range of just the optima is much wider than would be perceived with just an exploitation search, despite the fact that the Pareto fronts are nearly the same. In fact, the exploration helps find new regions that lead to faster fluxes and lower energies. This leads to broader and lower peaks.

Compare the optimal regions by the sampling densities

E.cutof = 40; F.cutof = 0.1*max(GPar.all$Flux.mol.m2s)
g1 = ggplot() +
  geom_density(data = filter(GPar.all, Energy.kJ.mol < E.cutof, Flux.mol.m2s > F.cutof),
               mapping = aes(x = pka1), color = 'blue') +
  geom_density(data = filter(GPar.comp, Energy.sep < E.cutof, DIC.flux > F.cutof),
               mapping = aes(x = -log10(k1)), color = 'red') +
  labs(x = expression('p'*italic(K)['a,1']), y = 'Density')

g3 = ggplot() +
  geom_density(data = filter(GPar.all, Energy.kJ.mol < E.cutof, Flux.mol.m2s > F.cutof),
               mapping = aes(x = pka1 + pka2), color = 'blue') +
  geom_density(data = filter(GPar.comp, Energy.sep < E.cutof, DIC.flux > F.cutof),
               mapping = aes(x = -log10(k2)), color = 'red') +
  labs(x = expression('p'*italic(K)['a,2']), y = 'Density')

g2 = ggplot() +
  geom_density(data = filter(GPar.all, Energy.kJ.mol < E.cutof, Flux.mol.m2s > F.cutof),
               mapping = aes(x = 10^logA), color = 'blue') +
  geom_density(data = filter(GPar.comp, Energy.sep < E.cutof, DIC.flux > F.cutof),
               mapping = aes(x = A), color = 'red') +
  scale_x_log10() +
  labs(x = '{Quinone}', y = 'Density')

g4 = ggplot() +
  geom_density(data = filter(GPar.all, Energy.kJ.mol < E.cutof, Flux.mol.m2s > F.cutof),
               mapping = aes(x = 10^logA * 10^Na.A, color = 'blue')) +
  geom_density(data = filter(GPar.comp, Energy.sep < E.cutof, DIC.flux > F.cutof),
               mapping = aes(x = abs(Na), color = 'red')) +
  scale_x_log10() +
  labs(x = '{NaOH}', y = 'Density') +
  scale_color_manual(labels = c('red' = 'Exploit only', 'blue' = 'Exploit + Explore'),
                     values = c('red' = 'red', 'blue' = 'blue'), name = '')


(g1 + g2) / (g3 + g4)

rm(g1, g2, g3, g4)

The densities show distinct differences in the pKas, and slight differences in concentrations. The differences are likely associated with being sourced from different ranges: the range of pKas for the exploitation only search restricted the pKa2 to lower values overall, but larger differences between pKa2 and pKa1, leading to different optimal regions. The concentration of salt to add is roughly the same at about 0.01 to 0.1 M NaOH, although the exploration leads to a broader peak. The concentration of quinone actually shows that a lower concentration (roughly 200 mM) is highly represented in the optimal region, likely because high concentrations of quinone require even higher NaOH concentrations which cannot be achieved.

Post-refinement marginals

Marginalize with 2 2D grids (pKa and concentration), as the 1D metrics did not provide useful insights.

The GP models are able to handle correlated inputs; the primary reason for de-correlating inputs is to re-map the search space into a rectangular form for easier sampling. This is not necessary when doing feature importance or assessing the marginals. Since the natural forms of the variables are easier to interpret, the feature importance and marginals will use the natural variables, i.e. not the difference between the pKas and the ratio of NaOH to quinone.

E.cutof = log10(40); #kJ/mol C, log units
F.cutof = 0.1*max(GPar.all$Flux.mol.m2s)

# Natural variables conversion
GPar.nat = GPar.all
GPar.nat$pka2 = GPar.nat$pka1 + GPar.nat$pka2
GPar.nat$Na.A = GPar.nat$logA + GPar.nat$Na.A

# Models
mod.flux = fill.sample.mod(GPar.data = GPar.nat, input.name = c('pka1', 'pka2', 'logA', 'Na.A'),
                           output.name = 'Flux.mol.m2s')
mod.ener = fill.sample.ener(GPar.data = GPar.nat, 
                            input.name = c('pka1', 'pka2', 'logA', 'Na.A'),
                            output.name = 'Energy.kJ.mol')

# Set up the marginalization. Same grid because the same limits on physical systems
resolution = 35; MCsamp = 2000
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)
lower = 0.25; upper = 0.75

# Set up the grid search
pkaX.grid = expand.grid(seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                        seq(from = pka2.rng[1], to = pka2.rng[2], length.out = resolution))
pkaX.grid = pkaX.grid[,c(1:2)]
names(pkaX.grid) = c('pka1', 'pka2')
pkaX.grid$p = NaN; pkaX.grid$l = NaN; pkaX.grid$s = NaN # Probability and the high and low

# Note: for the Na/A ratio, the interest is in the order of magnitude shifts, not the absolute shifts, going down to 10^-7.
# Since it is being tested for both positive and negative values, but they are of similar order of magnitude, half will be dedicated to each side
conc.grid = expand.grid(seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                        seq(from = Na.A.rng[1], to = Na.A.rng[2], length.out = resolution))
conc.grid = conc.grid[,c(1:2)]
names(conc.grid) = c('logA', 'Na.A')
conc.grid$p = NaN; conc.grid$l = NaN; conc.grid$s = NaN # Probability and the high and lowlower = 0.25; upper = 0.75

for(i in 1:nrow(pkaX.grid)){
  # pKas
  fill.frame = data.frame(pka1 = pkaX.grid$pka1[i],
                          pka2 = pkaX.grid$pka1[i] + pkaX.grid$pka2[i],
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$Na.A = fill.frame$Na.A + fill.frame$logA
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  pkaX.grid$p[i] = mean(fill.frame$p.accept)
  pkaX.grid$h[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = upper)
  pkaX.grid$l[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = lower)

  # Concentrations
  fill.frame = data.frame(pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          logA = conc.grid$logA[i],
                          Na.A = conc.grid$logA[i] + conc.grid$Na.A[i])
  fill.frame$pka2 = fill.frame$pka1 + fill.frame$pka2
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  conc.grid$p[i] = mean(fill.frame$p.accept)
  conc.grid$h[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = upper)
  conc.grid$l[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = lower)
}
lim = c(floor(min(pkaX.grid$l)*10)/10, ceiling(max(pkaX.grid$h)*10)/10); mid = mean(lim)
g1 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = l)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'blue', size = 0.1) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = '25th Percentile') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g2 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = p)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'blue', size = 0.1) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = 'Mean') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g3 = ggplot(filter(pkaX.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = pka1, y = pka1 + pka2, color = h)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = pka1, y = pka1 + pka2), color = 'blue', size = 0.1) +
  labs(x = 'pka1', y = 'pka2', color = 'P[Optimal]', subtitle = '75th Percentile') +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey'))
g1 + g2 + g3


lim = c(floor(min(conc.grid$l)*10)/10, ceiling(max(conc.grid$h)*10)/10); mid = mean(lim)
g1 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = l)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'blue', size = 0.1) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = '25th Percentile') +
  scale_x_log10() + scale_y_log10() +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g2 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = p)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'blue', size = 0.1) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = 'Mean') +
  scale_x_log10() + scale_y_log10() +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +  
  theme(panel.background = element_rect(fill = 'grey')) +
  guides(color = FALSE)
g3 = ggplot(filter(conc.grid, !is.nan(p))) +
  geom_point(mapping = aes(x = 10^logA, y = 10^Na.A*10^logA, color = h)) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol > 40 | Flux.mol.m2s < 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'red', size = 0.1) +
  geom_point(data = filter(GPar.all, Energy.kJ.mol < 40, Flux.mol.m2s > 0.1*max(Flux.mol.m2s)), 
             mapping = aes(x = 10^logA, y = 10^Na.A*10^logA), color = 'blue', size = 0.1) +
  labs(x = '[Quinone]', y = '[pH Correctant]', color = 'P[Optimal]', subtitle = '75th Percentile') +
  scale_x_log10() + scale_y_log10() +
  scale_color_gradient2(low = 'purple', high = 'orange', mid = 'white', midpoint = mid, limits = lim) +
  theme(panel.background = element_rect(fill = 'grey'))
g1 + g2 + g3

The 2D marginal highlights two key features: * There is an optimal pKa1 for capture at around 7.5-9.5. Below this point, capture is very unlikely, and above this point, there is large variance. * There is an optimal range for the concentration of quinone. Interestingly, this is a discrete optimum and not a monotonic increase. It is likely that increasing the amount of viable NaOH would broaden the range, but the maximum concentration of NaOH in these calculations (10^1.2, or about 15 M) is above the solubility limit of NaOH.

# Define the cutoff values
E.cutof = log10(40); #kJ/mol C, log units
F.cutof = 0.1*max(GPar.all$Flux.mol.m2s)

# Set up the marginalization
resolution = 50; MCsamp = 2000
pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5)
logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

# Set the ranges
post.optim = data.frame(pka1 = seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution),
                        pka2 = seq(from = pka2.rng[1] + pka1.rng[1], to = pka2.rng[2] + pka1.rng[2], 
                                   length.out = resolution),
                        logA = seq(from = logA.rng[1], to = logA.rng[2], length.out = resolution),
                        Na.A = seq(from = Na.A.rng[1] + logA.rng[1], to = Na.A.rng[2] + logA.rng[2], 
                                   length.out = resolution),
                        p.pka1 = NaN, p.pka2 = NaN, p.logA = NaN, p.Na.A = NaN, # Probability acceptance median
                        s.pka1 = NaN, s.pka2 = NaN, s.logA = NaN, s.Na.A = NaN, # variance for importance ranking
                        l.pka1 = NaN, l.pka2 = NaN, l.logA = NaN, l.Na.A = NaN, # lower bound
                        h.pka1 = NaN, h.pka2 = NaN, h.logA = NaN, h.Na.A = NaN) # upper bound
lower = 0.25; upper = 0.75

for(i in 1:resolution){
  # pka1
  fill.frame = data.frame(pka1 = post.optim$pka1[i],
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]) + post.optim$pka1[i],
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$Na.A = fill.frame$logA + fill.frame$Na.A
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  post.optim$p.pka1[i] = mean(fill.frame$p.accept)
  post.optim$s.pka1[i] = sd(fill.frame$p.accept)
  post.optim$h.pka1[i] = quantile(fill.frame$p.accept, probs = upper)
  post.optim$l.pka1[i] = quantile(fill.frame$p.accept, probs = lower)

  # pka2
  # Define the min/max
  pka1.testrng = c(max(pka1.rng[1], post.optim$pka2[i] - pka2.rng[2]),
                   min(pka1.rng[2], post.optim$pka2[i] - pka2.rng[1]))
  
  fill.frame = data.frame(pka2 = post.optim$pka2[i],
                          pka1 = runif(n = MCsamp, min = pka1.testrng[1], max = pka1.testrng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$Na.A = fill.frame$logA + fill.frame$Na.A
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  post.optim$p.pka2[i] = mean(fill.frame$p.accept)
  post.optim$s.pka2[i] = sd(fill.frame$p.accept)
  post.optim$h.pka2[i] = quantile(fill.frame$p.accept, probs = upper)
  post.optim$l.pka2[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # log Quinone
  fill.frame = data.frame(logA = post.optim$logA[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$pka2 = fill.frame$pka1 + fill.frame$pka2
  fill.frame$Na.A = fill.frame$logA + fill.frame$Na.A
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  post.optim$p.logA[i] = mean(fill.frame$p.accept)
  post.optim$s.logA[i] = sd(fill.frame$p.accept)
  post.optim$h.logA[i] = quantile(fill.frame$p.accept, probs = upper)
  post.optim$l.logA[i] = quantile(fill.frame$p.accept, probs = lower)
  
  # Na/A
  logA.testrng = c(max(logA.rng[1], post.optim$Na.A[i] - Na.A.rng[2]),
                   min(logA.rng[2], post.optim$Na.A[i] - Na.A.rng[1]))

  fill.frame = data.frame(Na.A = post.optim$Na.A[i],
                          pka1 = runif(n = MCsamp, min = pka1.rng[1], max = pka1.rng[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]),
                          logA = runif(n = MCsamp, min = logA.testrng[1], max = logA.testrng[2]))
  fill.frame$pka2 = fill.frame$pka1 + fill.frame$pka2
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  post.optim$p.Na.A[i] = mean(fill.frame$p.accept)
  post.optim$s.Na.A[i] = sd(fill.frame$p.accept)
  post.optim$h.Na.A[i] = quantile(fill.frame$p.accept, probs = upper)
  post.optim$l.Na.A[i] = quantile(fill.frame$p.accept, probs = lower)
}
# Function variables
g1 = ggplot(post.optim) +
  geom_line(mapping = aes(x = pka1, y = p.pka1)) +
  geom_line(mapping = aes(x = pka1, y = h.pka1), linetype = 2) +
  geom_line(mapping = aes(x = pka1, y = l.pka1), linetype = 2) +
  labs(x = 'pka1', y = 'P[Optimal]') +
  scale_y_continuous(limits = c(0, ceiling(max(post.optim$h.pka1)*10)/10) ) +
  scale_x_continuous(limits = c(min(post.optim$pka1), max(post.optim$pka2)))
g2 = ggplot(post.optim) +
  geom_line(mapping = aes(x = pka2, y = p.pka2)) +
  geom_line(mapping = aes(x = pka2, y = h.pka2), linetype = 2) +
  geom_line(mapping = aes(x = pka2, y = l.pka2), linetype = 2) +
  labs(x = 'pka2', y = 'P[Optimal]') +
  scale_y_continuous(limits = c(0, ceiling(max(post.optim$h.pka2)*10)/10) ) +
  scale_x_continuous(limits = c(min(post.optim$pka1), max(post.optim$pka2)))
(g1 / g2)


g3 = ggplot(post.optim) +
  geom_line(mapping = aes(x = 10^logA, y = p.logA)) +
  geom_line(mapping = aes(x = 10^logA, y = h.logA), linetype = 2) +
  geom_line(mapping = aes(x = 10^logA, y = l.logA), linetype = 2) +
  labs(x = '[Quinone]', y = 'P[Optimal]') +
  scale_x_log10() +
  scale_y_continuous(limits = c(0, ceiling(max(post.optim$h.logA)*10)/10) )
g4 = ggplot(post.optim) +
  geom_line(mapping = aes(x = 10^Na.A, y = p.Na.A)) +
  geom_line(mapping = aes(x = 10^Na.A, y = h.Na.A), linetype = 2) +
  geom_line(mapping = aes(x = 10^Na.A, y = l.Na.A), linetype = 2) +
  labs(x = '[Additional Base]', y = 'P[Optimal]') +
  scale_x_log10() +
  scale_y_continuous(limits = c(0, ceiling(max(post.optim$h.Na.A)*10)/10) )
(g3 / g4)

For the importance ranking, the most importance has the lowest total variance, normalized by the range of the mean probabilities (i.e. high variance with low means will be least important).

import = data.frame(rank = c(diff(range(post.optim$p.pka1))/sum(post.optim$s.pka1),
  diff(range(post.optim$p.pka2))/sum(post.optim$s.pka2),
  diff(range(post.optim$p.logA))/sum(post.optim$s.logA),
  diff(range(post.optim$p.Na.A))/sum(post.optim$s.Na.A)),
  var = c('pka1', 'pka2', 'logA', 'Na.A'))

ggplot(import[order(import$rank, decreasing = TRUE),]) +
  geom_col(mapping = aes(x = 1:4, y = rank/max(rank), fill = var)) +
  labs(x = '', y = '', color = '', subtitle = 'Feature Importance') +
  scale_fill_discrete(labels = c('pka1' = expression('p'*italic(K)['a,1']),
                                  'pka2' = expression('p'*italic(K)['a,2']), 
                                  'logA' = '{Quinone}',
                                  'Na.A' = '{NaOH}'),
                      breaks = import$var[order(import$rank, decreasing = TRUE)],
                      name = '') +
  scale_x_discrete(labels = c()) +
  scale_y_continuous(breaks = c(0, 1),
                     expand = expansion(mult = c(0, .1)),
                     labels = c('Least', 'Most'), name = 'Importance') +
  theme_classic() +
  theme(legend.position = c(0.9, 0.8))

Importance ranking suggests that the quinone characteristics (pKas and, to a lesser extent, the solubility limit) are more important than the operating condition decisions (concentrations of quinone and NaOH).

Sub-regions of interest

Applying the refinement process to further refine information about high fluxes and low energy regions independently.

The high flux region is fluxes above 0.22 mmol/m^2*s, while the low energy region is below 15 kJ/mol:

GPar.all = read.csv(file = 'GPar_90CapOpt_data.csv')
GPar.front = read.csv(file = 'GPar_fnt_data_90CapOpt.csv')

region.flux = data.frame(flux.max = max(GPar.front$Flux.mol.m2s), flux.min = 0.22e-3,
                     ener.max = 40, ener.min = min(GPar.front$Energy.kJ.mol)
                     )

region.ener = data.frame(flux.max = max(GPar.front$Flux.mol.m2s), flux.min = 0.1*max(GPar.front$Flux.mol.m2s),
                     ener.max = 15, ener.min = min(GPar.front$Energy.kJ.mol)
                     )

ggplot() +
  # Bounds
  geom_rect(region.flux, mapping = aes(xmax = flux.max, xmin = flux.min, ymax = ener.max, ymin = ener.min,
                                       color = 'flux'),
            fill = 'green', linetype = 1, alpha = 0.5) +
  geom_rect(region.ener, mapping = aes(xmax = flux.max, xmin = flux.min, ymax = ener.max, ymin = ener.min,
                                       color = 'ener'),
            fill = 'blue', linetype = 1, alpha = 0.5) +
  # Data
  geom_point(data = filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  geom_point(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'pareto')) +
  geom_line(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'pareto')) +
  scale_color_manual(values = c('pareto' = 'red', 'flux' = 'green', 'ener' = 'blue'),
                     labels = c('pareto' = 'Pareto Front', 'flux' = 'High Flux', 'ener' = 'Low Energy'),
                     name = '') +
  guides(colour = guide_legend(override.aes = list(shape = 15, size = 2, alpha = c(0.5, 0.5, 1),
                                                   fill = NA, linetype = c(0, 0, 0)))) +
  labs(x = 'CO2 Flux (mol/m2/s)', y = 'Energy (kJ/mol C)', subtitle = 'Subregions for refinement')

NA
NA

These regions are relatively small and poorly populated, so further refinement will be useful. Since the interest is in lower energy demands and higher fluxes, only the minimum flux and maximum energy boundaries will be used in the refinement process. The two refinement processes will be conducted “simultaneously” in that they will be performed on the same initial dataset to fine one point each, then the next points for each process added together in the next iteration.

For the iteration fitness stop criteria, use the maximum fitness among the two new points.

# High flux condition
fill.sample.sub.flux = function(x, model.flux, model.ener){
  # Evaluate the Kriging model function at x 
  res.flux = predict(object = model.flux, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')
  res.ener = predict(object = model.ener, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')

  # Probability distribution fits a Gaussian distribution.
  # Want the probability that the energy is below 40 kJ/mol C, 
  # flux is faster than 10% of the maximum (which still meets the energy criteria)
  E.cutof = log10(40); #kJ/mol C, log scale to account for multiple order of magnitude span
  F.cutof = 0.22e-3 # mol/m2s, flux at which there is a concavity in the Pareto front

  prob = c(1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd) *
             pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
           )
  
  # Variance based on propagation of errors, assuming independent measures.
  # Since the optimization looks for relative differences, the square root is not necessary
  sd = (res.flux$sd^2 * res.ener$mean^2 + res.ener$sd^2 * res.flux$mean^2)

  # Acquisition function result. Weight the probability slightly such that the maximum is 
  # 2 orders of magnitude higher than the minimum (and the minimum is not zero)
  # Given the number of points already collected, favor exploitation over exploration.
  return(sd*(prob*(1-prob) + 0.25/99))
}

# High flux condition
fill.sample.sub.ener = function(x, model.flux, model.ener){
  # Evaluate the Kriging model function at x 
  res.flux = predict(object = model.flux, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')
  res.ener = predict(object = model.ener, 
                     newdata = data.frame(pka1 = x[1], 
                                          pka2 = x[2], 
                                          logA = x[3], 
                                          Na.A = x[4]), type = 'UK')

  # Probability distribution fits a Gaussian distribution.
  # Want the probability that the energy is below 40 kJ/mol C, 
  # flux is faster than 10% of the maximum (which still meets the energy criteria)
  E.cutof = log10(15); # approximately halfway between the minimum energy and the top of the concavity in the Pareto front
  F.cutof = 0.1*max(GPar.front$Flux.mol.m2s)

  prob = c(1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd) *
             pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
           )
  
  # Variance based on propagation of errors, assuming independent measures.
  # Since the optimization looks for relative differences, the square root is not necessary
  sd = (res.flux$sd^2 * res.ener$mean^2 + res.ener$sd^2 * res.flux$mean^2)

  # Acquisition function result. Weight the probability slightly such that the maximum is 
  # 2 orders of magnitude higher than the minimum (and the minimum is not zero)
  # Given the number of points already collected, favor exploitation over exploration.
  return(sd*(prob*(1-prob) + 0.25/99))
}

# Next point search function
fill.sample.sub = function(GPar.data){
  # Models
  mod.flux = fill.sample.mod(GPar.data = GPar.data, input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                             output.name = 'Flux.mol.m2s')
  # Energy model has substantial outliers above 1e3 kJ/mol that skew the model; 
  # a more accurate model is found when restricted
  mod.ener = fill.sample.ener(GPar.data = GPar.data, 
                              input.name = c('pka1', 'pka2', 'logA', 'Na.A'), 
                              output.name = 'Energy.kJ.mol')

  # Next point by genetic algorithm: Max flux region
  GA.pred = ga(type = 'real-valued',
               fitness = function(x){fill.sample.sub.flux(x, model.flux = mod.flux, model.ener = mod.ener)},
               lower = c(2, 0, -2, -7), upper = c(13.5, 5.5, 0.5, 0.7),
               popSize = 50, maxiter = 50, run = 10, monitor = FALSE,
               parallel = 2)
  point.next = GA.pred@solution[1,]
  GPar.flux = data.frame(pka1 = point.next[1],
                        pka2 = point.next[2],
                        logA = point.next[3],
                        Na.A = point.next[4])
  
  # True result for both the energy and kinetics to add this to the dataset
  res = PCET.obj.flu(inputs = point.next)
  GPar.flux$Energy.kJ.mol = res[1]
  GPar.flux$Flux.mol.m2s  = -res[2] # Flip sign because optimization function minimizes
  GPar.flux$order = max(GPar.data$order) + 1

  # Also add the fitness to the dataframe for iteration cutoffs
  GPar.flux$fit = max(GA.pred@fitness)
  
  # Next point by genetic algorithm: Min energy region
  GA.pred = ga(type = 'real-valued',
               fitness = function(x){fill.sample.sub.ener(x, model.flux = mod.flux, model.ener = mod.ener)},
               lower = c(2, 0, -2, -7), upper = c(13.5, 5.5, 0.5, 0.7),
               popSize = 50, maxiter = 50, run = 10, monitor = FALSE,
               parallel = 2)
  point.next = GA.pred@solution[1,]
  GPar.ener = data.frame(pka1 = point.next[1],
                        pka2 = point.next[2],
                        logA = point.next[3],
                        Na.A = point.next[4])
  
  # True result for both the energy and kinetics to add this to the dataset
  res = PCET.obj.flu(inputs = point.next)
  GPar.ener$Energy.kJ.mol = res[1]
  GPar.ener$Flux.mol.m2s  = -res[2] # Flip sign because optimization function minimizes
  GPar.ener$order = max(GPar.data$order) + 1

  # Also add the fitness to the dataframe for iteration cutoffs
  GPar.ener$fit = max(GA.pred@fitness)
  
  # Return the new point and the fitness
  return(GPar.new = rbind(GPar.flux, GPar.ener))
}

Applying the functions with a looping iterative search

# Load data
GPar.all = read.csv(file = 'GPar_90CapOpt_data.csv')
GPar.front = read.csv(file = 'GPar_fnt_data_90CapOpt.csv')
# Remove indices
GPar.all = GPar.all[, !(names(GPar.all) %in% c("X"))]
GPar.front = GPar.front[, !(names(GPar.front) %in% c("X"))]

# First iteration to set the baseline of how much improvement there is to find.
newpoint = fill.sample.opt(GPar.data = GPar.all)
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
start.fit = max(newpoint$fit); 
current.fit = max(newpoint$fit); 

# Repeat for a maximum of 200 iterations, or until the fitness drops below 1/1000 of the starting fitness, 
# indicating little further improvement
max.iter = max(GPar.all$order) + 100
while(max(GPar.all$order) < max.iter & current.fit*1e3 > start.fit){
  GPar.all = rbind(GPar.all, newpoint[,names(newpoint) %in% names(GPar.all)])
  newpoint = fill.sample.sub(GPar.data = GPar.all)
  current.fit = max(newpoint$fit)
}
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
BFGS hit on best individual produced Out of Boundary individual.BFGS hit on best individual produced Out of Boundary individual.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
Stopped because hard maximum generation limit was hit.loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
loaded GA and set parent environment
# Store the data
write.csv(GPar.all, file = 'GPar_SubRef_data.csv')
# Updated Pareto front
test = as.matrix(GPar.all[GPar.all$Flux.mol.m2s > 0,names(GPar.all) %in% c('Energy.kJ.mol', 'Flux.mol.m2s')])
# For the Pareto front determination, need both to minimize
test[,2] = -test[,2]
par.front = t(nondominated_points(points = t(test)))
par.front[,2] = -par.front[,2]
# Identify the conditions leading to the Pareto front
GPar.front = filter(GPar.all, Energy.kJ.mol %in% par.front[,1], Flux.mol.m2s %in% par.front[,2])
GPar.front = GPar.front[,!names(GPar.front) %in% 'X']
write.csv(GPar.front, file = 'GPar_fnt_data_SubRef.csv')
GPar.all = read.csv(file = 'GPar_SubRef_data.csv')
GPar.front = read.csv(file = 'GPar_fnt_data_SubRef.csv')

region.flux = data.frame(flux.max = max(GPar.front$Flux.mol.m2s), flux.min = 0.22e-3,
                     ener.max = 40, ener.min = min(GPar.front$Energy.kJ.mol)
                     )

region.ener = data.frame(flux.max = max(GPar.front$Flux.mol.m2s), flux.min = 0.1*max(GPar.front$Flux.mol.m2s),
                     ener.max = 15, ener.min = min(GPar.front$Energy.kJ.mol)
                     )

ggplot() +
  # Bounds
  geom_rect(region.flux, mapping = aes(xmax = flux.max, xmin = flux.min, ymax = ener.max, ymin = ener.min,
                                       color = 'flux'),
            fill = 'green', linetype = 1, alpha = 0.5) +
  geom_rect(region.ener, mapping = aes(xmax = flux.max, xmin = flux.min, ymax = ener.max, ymin = ener.min,
                                       color = 'ener'),
            fill = 'blue', linetype = 1, alpha = 0.5) +
  # Data
  geom_point(data = filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol)) +
  geom_point(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'pareto')) +
  geom_line(data = GPar.front, mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol, color = 'pareto')) +
  geom_point(data = filter(GPar.all, Flux.mol.m2s > 0, Energy.kJ.mol < 100, order > 301), 
             mapping = aes(x = Flux.mol.m2s, y = Energy.kJ.mol), color = 'cyan') +
  scale_color_manual(values = c('pareto' = 'red', 'flux' = 'green', 'ener' = 'blue'),
                     labels = c('pareto' = 'Pareto Front', 'flux' = 'High Flux', 'ener' = 'Low Energy'),
                     name = '') +
  guides(colour = guide_legend(override.aes = list(shape = 15, size = 2, alpha = c(0.5, 0.5, 1),
                                                   fill = NA, linetype = c(0, 0, 0)))) +
  labs(x = 'CO2 Flux (mol/m2/s)', y = 'Energy (kJ/mol C)', subtitle = 'Subregions for refinement')

NA
NA

This refinement filled in a number of data points outside of and around the boundaries of the high flux and low energy regions, as well as within the generally acceptable regime (less than 40 kJ/mol C and greater than 1/10th of the maximum flux)

Further analysis (eg. suggested ranges for the variables) on the marginals will be conducted after combining this dataset with that of adding acid instead of adding base.


Suggested ranges for performance

For this investigation, the concern is in determining the optimal conditions for selecting the correct quinone, so the concentration of NaOH is not particularly relevant. Suggestions will still be made, but it will be assessed last (conveniently, it is the least important variable in the importance ranking).

The ranges are determined sequentially in order of most important variable to least important. For the most important variable, the most viable condition is the range that gives it a probability of meeting the acceptance criteria that is halfway between the maximum and minimum (weak range suggestion) and 75% of the way up from the minimum (strong range suggestion). The next most important will have its marginal re-assessed by assuming that the previous most important variables fall within the optimal region.

The marginal for the pKa1 will be re-calculated with finer resolution.

#```{r Optimal Capture Marginals Natural variables: Suggested Range pKa1} # Define the cutoff values E.cutof = log10(40); #kJ/mol C, log units F.cutof = 0.1*max(GPar.all$Flux.mol.m2s)

Set up the marginalization, higher resolution than the single variable marginals for plotting

resolution = 100; MCsamp = 2000 pka1.rng = c(2, 13.5); pka2.rng = c(0, 5.5) logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

Optimal range for pKa1

range.pka1 = data.frame(pka1 = seq(from = pka1.rng[1], to = pka1.rng[2], length.out = resolution), p.pka1 = NaN) for(i in 1:resolution){ # pka1 fill.frame = data.frame(pka1 = range.pka1\(pka1[i], pka2 = runif(n = MCsamp, min = pka2.rng[1], max = pka2.rng[2]) + range.pka1\)pka1[i], logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]), Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) fill.frame\(Na.A = fill.frame\)Na.A + fill.frame\(logA res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK') res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK') fill.frame\)p.accept = (1 - pnorm(q = 0, mean = res.flux\(mean - F.cutof, sd = res.flux\)sd)) * pnorm(q = 0, mean = res.ener\(mean - E.cutof, sd = res.ener\)sd) range.pka1\(p.pka1[i] = mean(fill.frame\)p.accept) }

Plot the range to determine how to describe the optimal range

ggplot(range.pka1) + geom_path(mapping = aes(x = pka1, p.pka1)) + geom_hline(yintercept = 0.5diff(range(range.pka1\(p.pka1))+min(range.pka1\)p.pka1), linetype = 2) + geom_hline(yintercept = 0.75diff(range(range.pka1\(p.pka1))+min(range.pka1\)p.pka1), linetype = 2) + labs(x = expression(‘p’*italic(K)[‘a,1’]), y = ‘P[Optimal]’)

Weak range: between 7~10 and above 12. However, the tailing effect of being above 12 is barely over the cutoff, so will be omitted for simplicity.

print(‘First pKa:’) print(‘Weak range:’) print(‘Between:’) print(round(range(filter(range.pka1, p.pka1 > 0.5*diff(range(p.pka1))+min(p.pka1), pka1 < 10)\(pka1), 2)) # Weak range: between 7~10 print('Strong range:') print('Between') print(round(range(filter(range.pka1, p.pka1 > 0.75*diff(range(p.pka1))+min(p.pka1))\)pka1), 2))

pka1.rng.wk = range(filter(range.pka1, p.pka1 > 0.5*diff(range(p.pka1))+min(p.pka1), pka1 < 10)\(pka1) pka1.rng.st = range(filter(range.pka1, p.pka1 > 0.75*diff(range(p.pka1))+min(p.pka1))\)pka1)


Range for the 1st pKa:
Weak suggestion:   7.23 ~ 9.55
Strong suggestion: 7.58 ~ 8.85

#```{r Optimal Capture Marginals Natural variables: Suggested Range pKa2}
# Set up the marginalization, higher resolution than the single variable marginals for plotting
resolution = 100; MCsamp = 2000
pka2.rng = c(0, 5.5); logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

# Due to the relationship between pKa1 and pKa2, the range of pKa2 is already partially restricted.
range.pka2.st = data.frame(pka2 = seq(from = min(pka1.rng.st) + pka2.rng[1], 
                                      to = max(pka1.rng.st) + pka2.rng[2], 
                                      length.out = resolution),
                           p.pka2 = NaN)
range.pka2.wk = data.frame(pka2 = seq(from = min(pka1.rng.wk) + pka2.rng[1], 
                                      to = max(pka1.rng.wk) + pka2.rng[2], 
                                      length.out = resolution),
                           p.pka2 = NaN)

for(i in 1:resolution){
  # Strong suggestion
  pka1.testrng = c(max(pka1.rng.st[1], range.pka2.st$pka2[i] - pka2.rng[2]),
                   min(pka1.rng.st[2], range.pka2.st$pka2[i] - pka2.rng[1]))
  
  fill.frame = data.frame(pka2 = range.pka2.st$pka2[i],
                          pka1 = runif(n = MCsamp, min = pka1.testrng[1], max = pka1.testrng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$Na.A = fill.frame$Na.A + fill.frame$logA
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  range.pka2.st$p.pka2[i] = mean(fill.frame$p.accept)
  
  # Weak suggestion
  pka1.testrng = c(max(pka1.rng.wk[1], range.pka2.wk$pka2[i] - pka2.rng[2]),
                   min(pka1.rng.wk[2], range.pka2.wk$pka2[i] - pka2.rng[1]))
  
  fill.frame = data.frame(pka2 = range.pka2.wk$pka2[i],
                          pka1 = runif(n = MCsamp, min = pka1.testrng[1], max = pka1.testrng[2]),
                          logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]),
                          Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2]))
  fill.frame$Na.A = fill.frame$Na.A + fill.frame$logA
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  range.pka2.wk$p.pka2[i] = mean(fill.frame$p.accept)
}

# Plot the probabilities to determine how to describe the optimal range
ggplot() +
  geom_path(data = range.pka2.wk, mapping = aes(x = pka2, y = p.pka2, color = 'weak')) +
  geom_hline(yintercept = 0.5*diff(range(range.pka2.wk$p.pka2))+min(range.pka2.wk$p.pka2), 
             color = 'red', linetype = 2) +
  geom_path(data = range.pka2.st, mapping = aes(x = pka2, y = p.pka2, color = 'strong')) +
  geom_hline(yintercept = 0.75*diff(range(range.pka2.st$p.pka2))+min(range.pka2.st$p.pka2),
             color = 'black', linetype = 2) +
  labs(x = expression('p'*italic(K)['a,2']), y = expression('P[Optimal | p'*italic(K)['a,1'])) +
  scale_color_manual(labels = c('weak' = 'Weak', 'strong' = 'Strong'),
                     name = 'Suggestion',
                     values = c('weak' = 'red', 'strong' = 'black'))

# Weak range: between 7~10 and above 12. However, the tailing effect of being above 12 is barely over the cutoff, so will be omitted for simplicity.
pka2.rng.wk = range(filter(range.pka2.wk, p.pka2 > 0.5*diff(range(p.pka2)) +min(p.pka2))$pka2)
pka2.rng.st = range(filter(range.pka2.st, p.pka2 > 0.75*diff(range(p.pka2))+min(p.pka2))$pka2)

print('First pKa:')
print('Weak range:')
print('Between:')
round(pka2.rng.wk, 2)
print('Strong range:')
print('Between')
round(pka2.rng.st, 2)

Range for the 2nd pKa: Weak suggestion: 8.49 ~ 13.23 Strong suggestion: 10.52 ~ 12.09

#```{r Optimal Capture Marginals Natural variables: Suggested Range Quinone concentration} # Set up the marginalization, higher resolution than the single variable marginals for plotting resolution = 100; MCsamp = 2000 pka2.rng = c(0, 5.5); logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

range.logA = data.frame(logA = seq(from = min(logA.rng), to = max(logA.rng), length.out = resolution), p.logA.wk = NaN, p.logA.st = NaN)

For random smapling, Constrain pka1 first, then pka2

for(i in 1:resolution){ # Strong suggestion fill.frame = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.st[1], max = pka1.rng.st[2]), pka2 = runif(n = MCsamp, min = pka2.rng.st[1], max = pka2.rng.st[2]), logA = range.logA\(logA[i], Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) # Account for the fact that the maximum pKa2 range is higher than the pKa1 range fill.frame = filter(fill.frame, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1]) while(nrow(fill.frame) < MCsamp){ fill.add = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.st[1], max = pka1.rng.st[2]), pka2 = runif(n = MCsamp, min = pka2.rng.st[1], max = pka2.rng.st[2]), logA = range.logA\)logA[i], Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) fill.add = filter(fill.add, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1]) fill.frame = rbind(fill.frame, fill.add) } fill.frame = fill.frame[1:MCsamp, ] fill.frame\(Na.A = fill.frame\)Na.A + fill.frame\(logA res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK') res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK') fill.frame\)p.accept = (1 - pnorm(q = 0, mean = res.flux\(mean - F.cutof, sd = res.flux\)sd)) * pnorm(q = 0, mean = res.ener\(mean - E.cutof, sd = res.ener\)sd) range.logA\(p.logA.st[i] = mean(fill.frame\)p.accept)

# Weak suggestion fill.frame = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.wk[1], max = pka1.rng.wk[2]), pka2 = runif(n = MCsamp, min = pka2.rng.wk[1], max = pka2.rng.wk[2]), logA = range.logA\(logA[i], Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) # Account for the fact that the maximum pKa2 range is higher than the pKa1 range fill.frame = filter(fill.frame, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1]) while(nrow(fill.frame) < MCsamp){ fill.add = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.wk[1], max = pka1.rng.wk[2]), pka2 = runif(n = MCsamp, min = pka2.rng.wk[1], max = pka2.rng.wk[2]), logA = range.logA\)logA[i], Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) fill.add = filter(fill.add, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1]) fill.frame = rbind(fill.frame, fill.add) } fill.frame = fill.frame[1:MCsamp, ] fill.frame\(Na.A = fill.frame\)Na.A + fill.frame\(logA res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK') res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK') fill.frame\)p.accept = (1 - pnorm(q = 0, mean = res.flux\(mean - F.cutof, sd = res.flux\)sd)) * pnorm(q = 0, mean = res.ener\(mean - E.cutof, sd = res.ener\)sd) range.logA\(p.logA.wk[i] = mean(fill.frame\)p.accept) }

Plot the probabilities to determine how to describe the optimal range

ggplot() + geom_path(data = range.logA, mapping = aes(x = 10^logA, y = p.logA.wk, color = ‘weak’)) + geom_hline(yintercept = 0.5diff(range(range.logA\(p.logA.wk))+min(range.logA\)p.logA.wk), color = ‘red’, linetype = 2) + geom_path(data = range.logA, mapping = aes(x = 10^logA, y = p.logA.st, color = ‘strong’)) + geom_hline(yintercept = 0.75diff(range(range.logA\(p.logA.st))+min(range.logA\)p.logA.st), color = ‘black’, linetype = 2) + labs(x = ‘{Quinone}’, y = expression(‘P[Optimal | p’italic(K)[’a,1’]’, p’italic(K)[’a,2’]’]’)) + scale_color_manual(labels = c(‘weak’ = ‘Weak’, ‘strong’ = ‘Strong’), name = ‘Suggestion’, values = c(‘weak’ = ‘red’, ‘strong’ = ‘black’)) + scale_x_log10()

Ranges. The weak suggestion has a slight dip under, but it is nearly flat at that point, so I will include it in the range

logA.rng.wk = range(filter(range.logA, p.logA.wk > 0.5*diff(range(p.logA.wk)) +min(p.logA.wk))\(logA) logA.rng.st = range(filter(range.logA, p.logA.st > 0.75*diff(range(p.logA.st))+min(p.logA.st))\)logA)

print(‘First pKa:’) print(‘Weak range:’) print(‘Between:’) round(10^logA.rng.wk, 2) print(‘Strong range:’) print(‘Between’) round(10^logA.rng.st, 2)


Range for Quinone concentration
Weak suggestion:   30 mM ~ 3.1 M
Strong suggestion: 70 mM ~ 310 mM

#```{r Optimal Capture Marginals Natural variables: Suggested Range NaOH concentration}
# Set up the marginalization, higher resolution than the single variable marginals for plotting
resolution = 100; MCsamp = 2000
pka2.rng = c(0, 5.5); logA.rng = c(-2, 0.5); Na.A.rng = c(-7, 0.7)

range.Na.A = data.frame(Na.A.wk = seq(from = min(Na.A.rng) + min(logA.rng.wk), 
                                      to = max(Na.A.rng) + max(logA.rng.wk), length.out = resolution),
                        Na.A.st = seq(from = min(Na.A.rng) + min(logA.rng.st), 
                                      to = max(Na.A.rng) + max(logA.rng.st), length.out = resolution),
                        p.Na.A.wk = NaN, p.Na.A.st = NaN)

# For random sampling, Constrain pka1 first, then pka2, then logA
for(i in 1:resolution){
  # Strong suggestion
  # Adjusted logA range
  logA.rng.test = c(max(c(logA.rng.st[1], range.Na.A$Na.A.st[i] - Na.A.rng[2])),
                    min(c(logA.rng.st[2], range.Na.A$Na.A.st[i] - Na.A.rng[1])))

  fill.frame = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.st[1], max = pka1.rng.st[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng.st[1], max = pka2.rng.st[2]),
                          logA = runif(n = MCsamp, min = min(logA.rng.test), max = max(logA.rng.test)),
                          Na.A = range.Na.A$Na.A.st[i])
  # Account for the fact that the maximum pKa2 range is higher than the pKa1 range
  fill.frame = filter(fill.frame, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1])
  while(nrow(fill.frame) < MCsamp){
    fill.add = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.st[1], max = pka1.rng.st[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng.st[1], max = pka2.rng.st[2]),
                          logA = runif(n = MCsamp, min = min(logA.rng.test), max = max(logA.rng.test)),
                          Na.A = range.Na.A$Na.A.st[i])
    fill.add = filter(fill.add, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1])
    fill.frame = rbind(fill.frame, fill.add)
  }
  fill.frame = fill.frame[1:MCsamp, ]
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  range.Na.A$p.Na.A.st[i] = mean(fill.frame$p.accept)
  
  # Weak suggestion
  logA.rng.test = c(max(c(logA.rng.wk[1], range.Na.A$Na.A.wk[i] - Na.A.rng[2])),
                    min(c(logA.rng.wk[2], range.Na.A$Na.A.wk[i] - Na.A.rng[1])))
  fill.frame = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.wk[1], max = pka1.rng.wk[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng.wk[1], max = pka2.rng.wk[2]),
                          logA = runif(n = MCsamp, min = min(logA.rng.test), max = max(logA.rng.test)),
                          Na.A = range.Na.A$Na.A.wk[i])
  # Account for the fact that the maximum pKa2 range is higher than the pKa1 range
  fill.frame = filter(fill.frame, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1])
  while(nrow(fill.frame) < MCsamp){
    fill.add = data.frame(pka1 = runif(n = MCsamp, min = pka1.rng.wk[1], max = pka1.rng.wk[2]),
                          pka2 = runif(n = MCsamp, min = pka2.rng.wk[1], max = pka2.rng.wk[2]),
                          logA = runif(n = MCsamp, min = min(logA.rng.test), max = max(logA.rng.test)),
                          Na.A = range.Na.A$Na.A.wk[i])
    fill.add = filter(fill.add, pka2 - pka1 < pka2.rng[2], pka2 - pka1 > pka2.rng[1])
    fill.frame = rbind(fill.frame, fill.add)
  }
  fill.frame = fill.frame[1:MCsamp, ]
  res.flux = predict(object = mod.flux, newdata = fill.frame, type = 'UK')
  res.ener = predict(object = mod.ener, newdata = fill.frame, type = 'UK')
  fill.frame$p.accept = (1 - pnorm(q = 0, mean = res.flux$mean - F.cutof, sd = res.flux$sd)) *
    pnorm(q = 0, mean = res.ener$mean - E.cutof, sd = res.ener$sd)
  range.Na.A$p.Na.A.wk[i] = mean(fill.frame$p.accept)
}

# Plot the probabilities to determine how to describe the optimal range
ggplot() +
  geom_path(data = range.Na.A, mapping = aes(x = 10^Na.A.wk, y = p.Na.A.wk, color = 'weak')) +
  geom_hline(yintercept = 0.5*diff(range(range.Na.A$p.Na.A.wk))+min(range.Na.A$p.Na.A.wk), 
             color = 'red', linetype = 2) +
  geom_path(data = range.Na.A, mapping = aes(x = 10^Na.A.st, y = p.Na.A.st, color = 'strong')) +
  geom_hline(yintercept = 0.75*diff(range(range.Na.A$p.Na.A.st))+min(range.Na.A$p.Na.A.st),
             color = 'black', linetype = 2) +
  labs(x = '{Quinone}', y = expression('P[Optimal | p'*italic(K)['a,1']*', p'*italic(K)['a,2']*', {Quinone}]')) +
  scale_color_manual(labels = c('weak' = 'Weak', 'strong' = 'Strong'),
                     name = 'Suggestion',
                     values = c('weak' = 'red', 'strong' = 'black')) +
  scale_x_log10()

Range for the 1st pKa: Weak suggestion: 7.23 ~ 9.55 Strong suggestion: 7.58 ~ 8.85

Range for the 2nd pKa: Weak suggestion: 8.49 ~ 13.23 Strong suggestion: 10.52 ~ 12.09

Range for Quinone concentration Weak suggestion: 30 mM ~ 3.1 M Strong suggestion: 70 mM ~ 310 mM

There is not a clear range for the NaOH concentration. For the strong set of range suggestions (higher probability of acceptance), it appears to have to optimal centered at 10 mM NaOH and 10 uM NaOH. These two values likely are associated with falling on one side or the other of a particular buffer region or set of buffer regions. For the weak set of range suggestions (lower probability of acceptance), it could span from about 1 M to negligible concentrations and still yield good results.

Compare to known data

A small set of quinone pKas was used to constrain the search space. This same dataset can be assessed for the likelihood that any compound will be viable given only the pKa values.

#```{r Known compounds assessment} # pka1 = quinone.data\(Pka.1 # pka2 = quinone.data\)Pka.2

quinone.data\(p.accept = NaN quinone.data\)h.accept = NaN quinone.data$l.accept = NaN

for(i in 1:nrow(quinone.data)){ # pKas fill.frame = data.frame(pka1 = quinone.data\(Pka.1[i], pka2 = quinone.data\)Pka.2[i], logA = runif(n = MCsamp, min = logA.rng[1], max = logA.rng[2]), Na.A = runif(n = MCsamp, min = Na.A.rng[1], max = Na.A.rng[2])) res.flux = predict(object = mod.flux, newdata = fill.frame, type = ‘UK’) res.ener = predict(object = mod.ener, newdata = fill.frame, type = ‘UK’) fill.frame\(p.accept = (1 - pnorm(q = 0, mean = res.flux\)mean - F.cutof, sd = res.flux\(sd)) * pnorm(q = 0, mean = res.ener\)mean - E.cutof, sd = res.ener\(sd) quinone.data\)p.accept[i] = mean(fill.frame\(p.accept) quinone.data\)h.accept[i] = quantile(filter(fill.frame, !is.nan(p.accept))\(p.accept, probs = upper) quinone.data\)l.accept[i] = quantile(filter(fill.frame, !is.nan(p.accept))$p.accept, probs = lower) }

Show most promising candidates in order from most to least likely to work

quinone.data[order(quinone.data$p.accept, decreasing = TRUE), !(names(quinone.data) %in% c(‘QuinoneCode’, ‘E0.1’, ‘E0.2’))]

Plot densities weighted by the acceptance probabilities

ggplot(quinone.data) + # Data geom_density(mapping = aes(x = Pka.1, color = ‘1’, weight = p.accept)) + geom_density(mapping = aes(x = Pka.2, color = ‘2’, weight = p.accept)) + # Optimal ranges geom_vline(xintercept = pka1.rng.st, color = ‘red’, linetype = 2) + geom_vline(xintercept = pka2.rng.st, color = ‘blue’, linetype = 2) + scale_color_manual(labels = c(‘1’ = expression(‘p’italic(K)[‘a,1’]), ‘2’ = expression(‘p’italic(K)[‘a,2’])), values = c(‘1’ = ‘red’, ‘2’ = ‘blue’)) + labs(x = expression(‘p’*italic(K)[‘a’]), y = ‘Likelihood Weighted Density’, subtitle = ‘Viable Known Quinones’, color = ’’)

```

Based solely on pKa information available, 5 quinones have a moderate likelihood of having low energy demands (probability of acceptance about > 40%). These 5 candidates have pKa values that are within the strong suggestion spans:

The top candidates appear to have a strongly electron withdrawing oxygen at the second carbon, and 4 of the top 5 have additional oxygen-containing groups on other carbons. This is promising given that these groups are likely to increase the solubility limit enough to fall within the optimal region, although it may lead to greater sensitivity to oxygen gas due to an increase in the electrophilicity of the carbons.

LS0tCnRpdGxlOiAiUHJvb2Ygb2YgY29uY2VwdDogWkRUNC5tb2QiCmF1dGhvcjogIkpvbmF0aGFuIEJvdWFsYXZvbmciCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCjwhLS0gb3V0cHV0OiAgICAtLT4KPCEtLSAgIG1kX2RvY3VtZW50OiAtLT4KPCEtLSAgICAgdmFyaWFudDogbWFya2Rvd25fZ2l0aHViIC0tPgoKIyBEZXNjcmlwdGlvbgpUaGlzIG5vdGVib29rIHVzZXMgYSBuZXdseSBkZXZlbG9wZWQgR2F1c3NpYW4gUHJvY2Vzcy1iYXNlZCBtZXRob2QgdG8gc29sdmUgZm9yIHRoZSBuZWFyLW9wdGltYWwgc2V0IG9mIHNvbHV0aW9ucyBmb3IgQ08yIGNhcHR1cmUgdXNpbmcgcHJvdG9uIGNvdXBsZWQgZWxlY3Ryb24gdHJhbnNmZXJzIChQQ0VUKSB0byBkcml2ZSBwSCBzd2luZ3MuIApUaGUgd29yayBhc3N1bWVzIHRoYXQgdGhlIHJlZG94IG1vbGVjdWxlIGlzIGEgcXVpbm9uZSwgYW5kIHJlc3RyaWN0cyB0aGUgc2VhcmNoIHRvIG9ubHkgY29tYmluYXRpb25zIG9mIHByb3BlcnRpZXMgdGhhdCBhIHF1aW5vbmUgaXMgbGlrZWx5IHRvIGhhdmUuCkFmdGVyIGRldGVybWluaW5nIHRoZSByZXN0cmljdGVkIHNlYXJjaCBzcGFjZSwgdGhlIHBlcmZvcm1hbmNlIG9mIENPMiBjYXB0dXJlLCBkZWZpbmVkIGJ5IG1pbmltdW0gZW5lcmd5IGRlbWFuZCBhbmQgdGhlIENPMiBjYXB0dXJlIGZsdXgsIHdpbGwgYmUgZGV0ZXJtaW5lZCB1c2luZyBlc3RhYmxpc2hlZCB0aGVybW9keW5hbWljIGFuZCBraW5ldGljcyBlcXVhdGlvbnMuClRoZSByZXN1bHRpbmcgUGFyZXRvIGZyb250aWVyIG9mIHRoaXMgYmktb2JqZWN0aXZlIHByb2JsZW0gaXMgc29sdmVkIHVzaW5nIHRoZSBHUGFyZXRvIHBhY2thZ2UsIHRoZW4gY2hhcmFjdGVyaXplZCB0byBkZWZpbmUgYWNjZXB0YWJsZSBzdWItb3B0aW1hbCBwZXJmb3JtYW5jZSBpbiB0aGUgbGlrZWx5IGV2ZW50IHRoYXQgYSBjb21wb3VuZCB3aXRoIHRoZSBleGFjdCBzcGVjaWZpY2F0aW9ucyBvZiBhbnkgb2YgdGhlIFBhcmV0byBmcm9udGllciBlc3RpbWF0ZXMgbm90IGV4aXN0LgpUaGUgbmVhci1vcHRpbWFsIHNldCB3aWxsIGJlIHNvbHZlZCB1c2luZyB0aGUgZXN0YWJsaXNoZWQgbWV0aG9kIChzZWUgb3RoZXIgbWF0aGVtYXRpY2FsIGV4YW1wbGVzIGZvciBkZXRhaWxzIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGUgYWxnb3JpdGhtKSB0byBkZXNjcmliZSB3aGF0IGNyaXRlcmlhIHRoZSBvcHRpbWFsIHF1aW5vbmUgYW5kIHNvbHV0aW9uIGNvbXBvc2l0aW9uIHNob3VsZCBoYXZlLgoKIyBDb2RlCiMjIEluaXRpYWxpemF0aW9uCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCkNsZWFyIHRoZSB3b3Jrc3BhY2UgYW5kIGRlZmluZSB0aGUgZnVuY3Rpb25zLgoKYGBge3IgTG9hZCBQYWNrYWdlc30KIyBTZXR1cApybShsaXN0ID0gbHMoKSkKIyBWaXN1YWxpemF0aW9uCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShwYXRjaHdvcmspCiMgUGFyYWxsZWwgcHJvY2Vzc2luZwpsaWJyYXJ5KHBhcmFsbGVsKQpsaWJyYXJ5KGRvUGFyYWxsZWwpCiMgR2F1c3NpYW4gcHJvY2Vzc2VzCmxpYnJhcnkoR1BhcmV0bykKbGlicmFyeShEaWNlS3JpZ2luZykKbGlicmFyeShEaWNlT3B0aW0pCiMgT3B0aW1pemF0aW9uCmxpYnJhcnkoR0EpCmBgYAoKIyMgUGFyYW1ldGVyIHNwYWNlCkRhdGEgZm9yIHJlc3RyaWN0aW5nIHRoZSBxdWlub25lIGZlYXR1cmVzIGlzIGJhc2VkIG9uIHJlc3VsdHMgZnJvbSBIdXluaCBldCBhbC4gSiBBbSBDaGVtIFNvYy4gMjAxNiBEZWNlbWJlciAxNDsgMTM4KDQ5KTogMTU5MDPigJMxNTkxMC4gZG9pOjEwLjEwMjEvamFjcy42YjA1Nzk3LgoKUmVtb3ZlIHBvaW50cyB0aGF0IGFyZSBub3QgbGlrZWx5IHRvIGJlIHN0YWJsZSB3aXRoaW4gdGhlIGVsZWN0cm9jaGVtY2lhbCB3aW5kb3cgb2Ygd2F0ZXIuIEZvciB0aGUgcHJvY2VzczoKUSArIDJlLSArIDJIKyA8LT4gUUgyCldlIGNhbiByb3VnaGx5IGFzc3VtZSB0aGF0IHRoZSByZWR1Y3Rpb24gcmVhY3Rpb24gaXMgY29tcGV0aW5nIHdpdGggaHlkcm9nZW4gZXZvbHV0aW9uCjJIKyArIDJlLSA8LT4gSDIKYW5kIHRoZSBveGlkYXRpb24gcmVhY3Rpb24gaXMgY29tcGV0aW5nIHdpdGggb3h5Z2VuIGV2b2x1dGlvbgoySDJPICsgNE9ILSA8LT4gTzIgKyA0ZS0KCkJvdGggb2YgdGhlc2UgcmVhY3Rpb25zIGFyZSBwSCBkZXBlbmRlbnQsIHNvIHRoZSBjdXRvZmYgdmFsdWVzIGFyZSBub3Qgb2J2aW91cy4gCkF0IHRoZSBleHRyZW1lLCB0aGUgcmVkdWN0aW9uIHBvdGVudGlhbCBvZiBoeWRyb2dlbiBldm9sdXRpb24gd2lsbCBiZSBhdCBpdHMgaGlnaGVzdCAobW9zdCBsaWtlbHkgdG8gY29tcGV0ZSB3aXRoIHRoZSBxdWlub25lIHJlZHVjdGlvbikgYXQgdGhlIGxvd2VzdCBwSCwgd2hpY2ggd291bGQgdHlwaWNhbGx5IGJlIGF0IHRoZSBwSCB3aGVyZSBjYXJib25pYyBhY2lkIG1ha2VzIHVwID4gOTAlIG9mIHRoZSBDTzIgc3BlY2lhdGlvbiAocEggPSA1LjMzKS4KU2ltaWxhcmx5LCB0aGUgcmVkdWN0aW9uIHBvdGVudGlhbCBvZiBveHlnZW4gZXZvbHV0aW9uIHdpbGwgYmUgYXQgaXRzIGxvd2VzdCBhdCB0aGUgaGlnaGVzdCBwSCwgd2hpY2ggd291bGQgYmUganVzdCBhYm92ZSB0aGUgaHlkcm9xdWlub25lJ3MgYnVmZmVyIHJlZ2lvbiAodGhlIGhpZ2hlciBvZiBpdHMgcEthcyArIDEpLgoKUHJhY3RpY2FsbHksIHRoZSBxdWlub25lIGVsZWN0cm9jaGVtaXN0cnkgaGFzIG11Y2ggZmFzdGVyIGtpbmV0aWNzIHRoYW4gZWl0aGVyIGdhcyBldm9sdXRpb24gcmVhY3Rpb24gaW4gdGhlIGFic2VuY2Ugb2YgYSBzcGVjaWZpYyB3YXRlci1zcGxpdHRpbmcgY2F0YWx5c3QsIHNvIGEgdG9sZXJhbmNlIG9mIGFib3V0IDIwMCBtViB3aWxsIGJlIGFkZGVkIHRvIGFjY29tbW9kYXRlLgoKYGBge3J9CiMgTG9hZCBkYXRhIGFuZCBjb3JyZWxhdGlvbiBwbG90IHBhY2thZ2UKcXVpbm9uZS5kYXRhID0gcmVhZC5jc3YoZmlsZSA9ICdIdXluaERhdGEuY3N2Jywgc2tpcCA9IDEpCgojIEZpbHRlciB0aGUgZGF0YSB0byBvbmx5IHRob3NlIHdob3NlIHJlYWN0aW9uIHdvdWxkIGJlIHN0YWJsZSBpbiB3YXRlcgojIyBIeWRyb2dlbiBldm9sdXRpb24KaDIuZXZvID0gLTU5LjIqMWUtMyAqIDUuMzMKcXVpbm9uZS5kYXRhID0gZmlsdGVyKHF1aW5vbmUuZGF0YSwgRTAuMiA+IGgyLmV2bykKCiMjIEN1dG9mZiB2YWx1ZSBmb3Igb3h5Z2VuIGV2b2x1dGlvbgpvMi5ldm8gPSAxLjIyOSArIC01OS4yKjFlLTMqcXVpbm9uZS5kYXRhJFBrYS4yKzEKcXVpbm9uZS5kYXRhID0gZmlsdGVyKHF1aW5vbmUuZGF0YSwgRTAuMSA8IG8yLmV2bykKCnF1aW5vbmUuZGF0YQoKIyBDb3JyZWxhdGlvbiBwbG90IGJldHdlZW4gdGhlIEUwIGFuZCBwa2EgdmFsdWVzCmNvci5tYXQgPSBtYXRyaXgoZGF0YSA9IHJlcCgwLCAxNiksIG5yb3cgPSA0KQpmb3IoaSBpbiBzZXEoZnJvbSA9IDYsIHRvID0gOSwgYnkgPSAxKSl7CiAgZm9yKGogaW4gc2VxKGZyb20gPSBpLCB0byA9IDksIGJ5ID0gMSkpewogICAgY29yLm1hdFtpLTUsai01XSA9IGNvcih4ID0gcXVpbm9uZS5kYXRhWyxpXSwgeSA9IHF1aW5vbmUuZGF0YVssal0pCiAgfQp9CmNvci5tYXQKCmcxID0gZ2dwbG90KHF1aW5vbmUuZGF0YSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh5ID0gRTAuMSwgeCA9IEUwLjIpKSArCiAgbGFicyhzdWJ0aXRsZSA9IHBhc3RlKCdyID0gJywgcm91bmQoY29yLm1hdFsxLDJdLCAzKSkpIApnMiA9IGdncGxvdChxdWlub25lLmRhdGEpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeSA9IEUwLjEsIHggPSBQa2EuMSkpICsKICBsYWJzKHN1YnRpdGxlID0gcGFzdGUoJ3IgPSAnLCByb3VuZChjb3IubWF0WzEsM10sIDMpKSkKZzMgPSBnZ3Bsb3QocXVpbm9uZS5kYXRhKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHkgPSBFMC4xLCB4ID0gUGthLjIpKSArCiAgbGFicyhzdWJ0aXRsZSA9IHBhc3RlKCdyID0gJywgcm91bmQoY29yLm1hdFsxLDRdLCAzKSkpCmc0ID0gZ2dwbG90KHF1aW5vbmUuZGF0YSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh5ID0gRTAuMiwgeCA9IFBrYS4xKSkgKwogIGxhYnMoc3VidGl0bGUgPSBwYXN0ZSgnciA9ICcsIHJvdW5kKGNvci5tYXRbMiwzXSwgMykpKQpnNSA9IGdncGxvdChxdWlub25lLmRhdGEpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeSA9IEUwLjIsIHggPSBQa2EuMikpICsKICBsYWJzKHN1YnRpdGxlID0gcGFzdGUoJ3IgPSAnLCByb3VuZChjb3IubWF0WzIsNF0sIDMpKSkKZzYgPSBnZ3Bsb3QocXVpbm9uZS5kYXRhKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHkgPSBQa2EuMSwgeCA9IFBrYS4yKSkgKwogIGxhYnMoc3VidGl0bGUgPSBwYXN0ZSgnciA9ICcsIHJvdW5kKGNvci5tYXRbMyw0XSwgMykpKQoKKGcxICsgZzIgKyBnMykgLyAocGxvdF9zcGFjZXIoKSArIGc0ICsgZzUpIC8gKHBsb3Rfc3BhY2VyKCkgKyBwbG90X3NwYWNlcigpICsgZzYpCnJtKGcxLCBnMiwgZzMsIGc0LCBnNSwgZzYpCnJtKGgyLmV2bywgaSwgaiwgbzIuZXZvLCBjb3IubWF0KQpgYGAKCldoaWxlIGFsbCBmb3VyIHZhcmlhYmxlcyBhcmUgc3Ryb25nbHkgY28tY29ycmVsYXRlZCwgdGhpcyBpcyBsYXJnZWx5IGlycmVsZXZhbnQgYmVjYXVzZSB0aGUgdGhlcm1vZHluYW1pYyBhbmQga2luZXRpYyBhbmFseXNlcyBkbyBub3QgcmVseSBvbiB0aGUgcmVkdWN0aW9uIHBvdGVudGlhbCBiZXNpZGVzIGFzc3VtaW5nIHRoYXQgZ2FzIGV2b2x1dGlvbiBkb2VzIG5vdCBvY2N1ci4KVGhlcmUgaXMgYSBCcm9uc3RlZC1saWtlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSByZWR1Y3Rpb24gcG90ZW50aWFsIGFuZCB0aGUgcmVhY3Rpb24gcmF0ZSBvZiB0aGUgZGVwcm90b25hdGVkIGh5ZHJvcXVpbm9uZSBudWNsZW9waGlsaWNhbGx5IGF0dGFja2luZyB0aGUgQ08yIFtTaW1wc29uICYgRHVyYW5kIDE5OTAsIGRvaTogMTAuMTAxNi8wMDEzLTQ2ODYoOTApODUwMTItQ10sIGJ1dCB0aGlzIGlzIG5vdCBsaWtlbHkgdG8gYmUgdGhlIGRvbWluYW50IG1lY2hhbmlzbSBiZWNhdXNlIHRoZSByZWFjdGlvbiB3aXRoIE9ILSBpcyBhcHByb3hpbWF0ZWx5IDEwIHRvIDEwMCB0aW1lcyBmYXN0ZXIgaW4gd2F0ZXIuClRvIGRldGVybWluZSB3aGljaCBwS2Egd2lsbCBiZSB0aGUgZnJlZSB2YXJpYWJsZSBhbmQgd2hpY2ggd2lsbCBiZSByZXByZXNlbnRlZCBieSBhbiBlcnJvciB0ZXJtIG9mIHRoZSBsaW5lYXIgcmVncmVzc2lvbiwgdGhlIHJlbGF0aXZlIG5vcm1hbGl6ZWQgc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiB0aGUgZXJyb3JzIHdlcmUgY29tcGFyZWQuIAoKYGBge3J9CnByaW50KCdwa2EyIGFzIGZyZWUgdmFyaWFibGUsIHBLYTEgYXMgdGhlIHNvbHZlZCB2YXJpYWJsZScpCm1vZDEgPSBsbShQa2EuMSB+IFBrYS4yLCBkYXRhID0gcXVpbm9uZS5kYXRhKQpzZChtb2QxJHJlc2lkdWFsc1thYnMobW9kMSRyZXNpZHVhbHMpIDwgMTBdKSAvIGRpZmYocmFuZ2UocXVpbm9uZS5kYXRhJFBrYS4xKSkKICAKcHJpbnQoJ3BrYTEgYXMgZnJlZSB2YXJpYWJsZSwgcEthMiBhcyB0aGUgc29sdmVkIHZhcmlhYmxlJykKbW9kMiA9IGxtKFBrYS4yIH4gUGthLjEsIGRhdGEgPSBxdWlub25lLmRhdGEpCnNkKG1vZDIkcmVzaWR1YWxzW2Ficyhtb2QyJHJlc2lkdWFscykgPCAxMF0pIC8gZGlmZihyYW5nZShxdWlub25lLmRhdGEkUGthLjIpKQoKeCA9IGModW5uYW1lKG1vZDEkcmVzaWR1YWxzKSwgdW5uYW1lKG1vZDIkcmVzaWR1YWxzKSkKdmFyID0gYyhyZXAoJ3BrYTEnLCBsZW5ndGgobW9kMSRyZXNpZHVhbHMpKSwgcmVwKCdwa2EyJywgbGVuZ3RoKG1vZDEkcmVzaWR1YWxzKSkpCmdncGxvdChkYXRhLmZyYW1lKHgsIHZhcikpICsKICBnZW9tX2RlbnNpdHkobWFwcGluZyA9IGFlcyh4ID0geCwgY29sb3IgPSB2YXIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IGMoJ3BrYTEnID0gJ3BrYTEgPSBmKHBrYTIpJywgJ3BrYTInID0gJ3BrYTIgPSBmKHBrYTEpJyksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoJ3BrYTEnID0gJ3JlZCcsICdwa2EyJyA9ICdibHVlJyksIG5hbWUgPSAnJykgKwogIGxhYnMoeCA9ICdSZXNpZHVhbCcsIHkgPSAnUHJvYmFiaWxpdHkgRGVuc2l0eScpCgojIERldGVybWluZSB0aGUgdmFsdWUgZm9yIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gdGhhdCBzaG91bGQgYmUgdXNlZCB0byBlbmNvbXBhc3MgOTglIG9mIHRoZSBzZWFyY2ggc3BhY2UKcTEgPSBxdWFudGlsZShtb2QyJHJlc2lkdWFscywgcHJvYnMgPSBjKDAuMDEpKQpxMiA9IHF1YW50aWxlKG1vZDIkcmVzaWR1YWxzLCBwcm9icyA9IGMoMC45OSkpCiMgUGxvdCB0aGUgZGF0YSBhbmQgdGhlIHNlYXJjaCBzcGFjZQpmaXQubG4gPSBkYXRhLmZyYW1lKFBrYS4xID0gc2VxKGZyb20gPSAtOC4zMywgdG8gPSAxMy40MSwgbGVuZ3RoLm91dCA9IDMpKQpmaXQubG4kUGthLjIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZDIsIG5ld2RhdGEgPSBmaXQubG4pCmdncGxvdCgpICsKICBnZW9tX3BvaW50KHF1aW5vbmUuZGF0YSwgbWFwcGluZyA9IGFlcyh4ID0gUGthLjEsIHkgPSBQa2EuMiksIGNvbG9yID0gJ2JsdWUnLCBhbHBoYSA9IDAuNSkgKwogIGdlb21fbGluZShmaXQubG4sIG1hcHBpbmcgPSBhZXMoeCA9IFBrYS4xLCB5ID0gUGthLjIpLCBjb2xvciA9ICdibGFjaycsIGxpbmV0eXBlID0gMSkgKwogIGdlb21fbGluZShmaXQubG4sIG1hcHBpbmcgPSBhZXMoeCA9IFBrYS4xLCB5ID0gUGthLjIrcTIpLCBjb2xvciA9ICdibGFjaycsIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShmaXQubG4sIG1hcHBpbmcgPSBhZXMoeCA9IFBrYS4xLCB5ID0gUGthLjIrcTEpLCBjb2xvciA9ICdibGFjaycsIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShmaXQubG4sIG1hcHBpbmcgPSBhZXMoeCA9IFBrYS4xLCB5ID0gUGthLjEpLCBjb2xvciA9ICdyZWQnLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX2xpbmUoZml0LmxuLCBtYXBwaW5nID0gYWVzKHggPSBQa2EuMSwgeSA9IFBrYS4xK3EyKSwgY29sb3IgPSAncmVkJywgbGluZXR5cGUgPSAyKSArCiAgbGFicyh0aXRsZSA9IGV4cHJlc3Npb24oJ0tub3duIFF1aW5vbmUgcCcqaXRhbGljKEspKicnW2FdKidzJyksCiAgICAgICB5ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspKicnWydhLDInXSksCiAgICAgICB4ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspKicnWydhLDEnXSkpCnExCnEyCnJtKGZpdC5sbiwgeCwgdmFyKQoKYGBgCgpUaGUgdmFyaWFuY2UgYWxvbmUgc2hvdyB2ZXJ5IGxpdHRsZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGNob2ljZSwgd2hpY2ggcEthMSBiZWluZyB0aGUgZnJlZSB2YXJpYWJsZSBoYXZpbmcgYSBzbGlnaHRseSBiZXR0ZXIgcmVzcG9uc2UuClRoaXMgaXMgY29uZmlybWVkIGJ5IHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHJlc2lkdWFscyAob21pdHRpbmcgdGhlIHNpbmdsZSBvdXRsaWVyKSwgd2hpY2ggc2hvd3MgdGhhdCBoYXZpbmcgcEthMSBhcyB0aGUgZnJlZSB2YXJpYWJsZSBnaXZlcyBhIGRpc3RyaWJ1dGlvbiBjbG9zZXIgdG8gYSBub3JtYWwgZGlzdHJpYnV0aW9uLgpUaGVyZWZvcmUsIHRoZSByYW5nZSBvZiBwS2FzIGlzOgoKcEthMTogLTguMzMgdG8gMTMuNDEKcEthMiA9IGYocEthMSkgKyBlcnJvcgoKV2hpbGUgdGhlIGVycm9yIGZvciBwS2EyIGlzIG5lYXJseSBHYXVzc2lhbiBpbiBzaGFwZSwgdGhlIG1hdGhlbWF0aWNhbCBkZXNjcmlwdGlvbiB3b3JrcyBiZXR0ZXIgaWYgaXQgaXMgc2FtcGxlZCBmcm9tIGEgdW5pZm9ybSBkaXN0cmlidXRpb24uIEZyb20gdGhlIGRhdGEsIDk4JSBvZiB0aGUgZGF0YSBpcyBjYXB0dXJlZCB3aXRoaW4gYW4gZXJyb3Igb2YgLTMuOSB0byArNS41LgoKVGhpcyByYW5nZSBvZiBwS2FzIGhhcyAyIHByb2JsZW1zOgoqIEFuIGlzc3VlIHNlZW1zIHRvIGFyaXNlIHdoZW4gdGhlIHNlY29uZCBwS2EgaXMgbG93ZXIgdGhhbiB0aGUgZmlyc3QsIGhvd2V2ZXIsIGRlc3BpdGUgc29tZSBhY3R1YWwgbWVhc3VyZW1lbnRzIHZpb2xhdGluZyB0aGF0IGNyaXRlcmlhIChyZWQgZG90dGVkIGxpbmUpLiAKQWxsIHBvaW50cyB0aGF0IGRvIHZpb2xhdGUgdGhhdCByZXN0cmljdGlvbiBhcmUgd2l0aGluIG1lYXN1cmVtZW50IGVycm9yIHdpdGggb25lIGV4Y2VwdGlvbiwgc28gdGhhdCBjb3VsZCBiZSB0aGUgY2F1c2UuCiogVGhlIHBIIG9mIHRoZSBwcm9jZXNzIGlzIG5vdCBsaWtlbHkgdG8gZXh0ZW5kIGJlbG93IDMgYmVjYXVzZSB0aGUgcHJpbWFyeSBhY2lkIGluIHF1ZXN0aW9uIGlzIGNhcmJvbmljIGFjaWQuIFRoaXMgbWVhbnMgdGhhdCBwS2EgdmFsdWVzIGJlbG93IDIgYXJlIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFuZCBkbyBub3QgbmVlZCB0byBiZSBzYW1wbGVkIGZ1cnRoZXIuIFRoZXJlZm9yZSwgdGhlIGxvd2VyIGJvdW5kIGZvciBwS2ExIGNhbiBiZSBpbmNyZWFzZWQgdG8gcmVkdWNlIHRoZSBzZWFyY2ggc3BhY2UuCgpUaGUgcmVmaW5lZCBzZWFyY2ggc3BhY2UgaXM6CgpwS2ExOiAwIHRvIDEzLjQxCnBLYTIgPSBwS2ExICsgZXJyb3IKZXJyb3IgfiB1bmlmKDAsIDUuNSkKCiMjIE9iamVjdGl2ZSBGdW5jdGlvbnMKClRoZSBvYmplY3RpdmUgZnVuY3Rpb24gZm9yIGVuZXJneSBkZW1hbmQgc29sdmVzIHRoZSBzZXQgb2YgZXF1aWxpYnJpdW0gZXF1YXRpb25zIGFjcm9zcyB0aGUgcmFuZ2Ugb2YgY2hhcmdlIGFuZCBnYXMgdHJhbnNmZXJzIGJhc2VkIG9uIGZvdXIgc3RhdGUgdmFyaWFibGVzOiAKdG90YWwgZGlzc29sdmVkIGlub3JnYW5pYyBjYXJib24gKERJQyksIHN0YXRlIG9mIGNoYXJnZSAoeEEpLCBwYXJ0aWFsIHByZXNzdXJlIG9mIENPMiAocENPMiksIGFuZCBzb2x1dGlvbiBwSC4KClRoZSBtaW5pbXVtIGVuZXJneSBkZW1hbmQgYXNzdW1lcyBhbGwgY2hhcmdlIGlzIHBhc3NlZCBhdCB0aGUgTmVybnN0IHBvdGVudGlhbCwgd2hpY2ggaXMgdXBkYXRlZCBhcyBjaGFyZ2UgcGFzc2VzIHRocm91Z2ggdGhlIHN5c3RlbS4KVGhlIGVuZXJneSBkZW1hbmQgYXNzdW1lcyBhbnRpLXN5bW1ldHJpYyBvcGVyYXRpb24sIGllLiBxdWlub25lIHJlZHVjdGlvbiBhdCB0aGUgY2F0aG9kZSBhbmQgaHlkcm9xdWlub25lIG94aWRhdGlvbiBhdCB0aGUgYW5vZGUuCkNoYXJnZSBiYWxhbmNlIG9mIHRoZSBhbm9seXRlIGFuZCBjYXRob2x5dGUgYXJlIGFzc3VtZWQgdG8gYmUgdGhlIHJlc3VsdCBvZiB0aGUgYmFja2dyb3VuZCBlbGVjdHJvbHl0ZSB0cmF2ZWxsaW5nIGFjcm9zcyBhbiBpb24gc2VsZWN0aXZlIG1lbWJyYW5lLgpUaGUgZ2FzIHRyYW5zZmVycyBhcmUgYXNzdW1lZCB0byBiZSBzZXBhcmF0ZSBzdGFnZXMgZnJvbSB0aGUgZWxlY3Ryb2NoZW1pY2FsIHN0YWdlcywgcHVyZWx5IGZvciB0aGUgc2FrZSBvZiBzaW1wbGljaXR5LiAKVGhpcyBlc3RpbWF0ZSBmb3IgdGhlIG1pbmltdW0gZW5lcmd5IGlzIGEgc2xpZ2h0IG92ZXJlc3RpbWF0ZSBiZWNhdXNlIG9mIG92ZXItcHJlc3N1cml6YXRpb24gb2YgdGhlIENPMjsgY291cGxpbmcgdGhlIGdhcyB0cmFuc2ZlciBzdGVwcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlbGVjdHJvY2hlbWljYWwgc3RlcHMgZGVjcmVhc2VzIHRoZSBtaW5pbXVtIGVuZXJneSBieSBhcHByb3hpbWF0ZWx5IGEgZmFjdG9yIG9mIDIuClRoZSBmdW5jdGlvbiBjYW4gYWNjb21tb2RhdGUgZmVlZCBDTzIgZ2FzZXMgb2YgYW55IHBhcnRpYWwgcHJlc3N1cmUsIGJ1dCB0aGlzIHN0dWR5IGlzIGludGVyZXN0ZWQgaW4gMyBhcHBsaWNhdGlvbnM6IGNvYWwgZmx1ZSBnYXMgKDE1diUgZmVlZCB0byAxLjV2JSBsZWFuKSwgYWlyIHJldml0YWxpemF0aW9uICgyMDAwIHBwbSB0byAxMDAwIHBwbSksIGFuZCBkaXJlY3QgYWlyIGNhcHR1cmUgKDQwMCBwcG0gdG8gMjUwIHBwbSkuCgpUaGlzIGNvZGUgaXMgYnJva2VuIGRvd24gaW50byBleHBsaWNpdCBmdW5jdGlvbnMgYW5kIGRlcml2ZWQgZnVuY3Rpb25zLgpFeHBsaWNpdCBmdW5jdGlvbnMgYXJlIGEgc2VyaWVzIG9mIHN1Yi1mdW5jdGlvbnMgd2hpY2ggc29sdmUgZm9yIG9uZSBvZiB0aGUgZm91ciBzdGF0ZSB2YXJpYWJsZXMgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBvdGhlciB0aHJlZSBzdGF0ZSB2YXJpYWJsZXMgYW5kIHRoZSBzb2x1dGlvbiBjb25kaXRpb25zLiAKVGhlc2UgZnVuY3Rpb25zIHNvbHZlIHRoZSBzZXQgb2YgY2hlbWljYWwgZXF1aWxpYnJpdW0sIG1hc3MsIGFuZCBjaGFyZ2UgYmFsYW5jZSBlcXVhdGlvbnMgZm9yIHRoZSBidWxrIHNvbHV0aW9uLgpEZXJpdmVkIGZ1bmN0aW9ucyB1c2UgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlIGV4cGxpY2l0IGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIGRldGVybWluaW5nIHRoZSBlbmVyZ3kgZGVtYW5kIGFuZCBDTzIgZmx1eC4KCkZvciB0aGUgcHVycG9zZSBvZiBnZW5lcmFsaXphdGlvbiwgdGhlc2UgZXF1YXRpb25zIGFyZSB3cml0dGVuIHdpdGggdGhlIHZhcmlhYmxlcyAnYmV0YTEnIGFuZCAnYmV0YTInIHdoaWNoIGRlc2NyaWJlIHRoZSBkZXByb3RvbmF0ZWQgaHlkcm9xdWlub25lJ3MgYWZmaW5pdHkgZm9yIENPMiwgZm9ybWluZyBhbiBvcmdhbmljIGNhcmJvbmF0ZS4gClRoaXMgc3BlY2llcyBpcyBpZ25vcmVkIGluIHRoaXMgcGFydGljdWxhciBub3RlYm9vayBmb3IgdGhlIGFib3ZlLXN0YXRlZCByZWFzb24gKHNsb3cga2luZXRpY3MpLCBhbmQgdGhlcmVmb3JlIGJvdGggdmFyaWFibGVzIGFyZSBzZXQgdG8gMC4KVGhlc2UgdmFyaWFibGVzIGFyZSBpbmNsdWRlZCBiZWNhdXNlIG90aGVyIGNvbXBvdW5kcyBoYXZlIGJlZW4gcHJvcG9zZWQgdG8gY2FwdHVyZSBDTzIgcHJpbWFyaWx5IHRocm91Z2ggdGhhdCBtZWNoYW5pc20sIGFuZCB0aHVzIHRoZXkgY291bGQgYWxzbyBiZSBzdHVkaWVkIHdpdGggdGhpcyBzY3JpcHQuCgpgYGB7ciBQQ0VUIEV4cGxpY2l0IGZ1bmN0aW9uc30KIyBEaXJlY3QgZXhwbGljaXQgZnVuY3Rpb25zCiMgRnVuY3Rpb25zIGFyZSBuYW1lZCB3aXRoIHRoZSBvdXRwdXQgdmFyaWFibGUgZmlyc3QsIHRoZW4gYWxsIHJlbGV2YW50IGlucHV0cwpESUMueEEucENPMi5wSC5BLmsuYmV0YSA9IGZ1bmN0aW9uKHhBLCBwQ08yLCBwSCwgQS50b3QsIGsxLCBrMiwgYmV0YTEsIGJldGEyKXsKICAjIENvbnN0YW50czogY2FyYm9uYXRlIGFuZCB3YXRlciBjaGVtaXN0cnkgCiAga0ggPSAzLjRlLTI7ICMgTS9hdG0KICBrYzEgPSAxMF4tNi4zCiAga2MyID0gMTBeLTEwLjMKICBrdyA9IDFlLTE0CiAgCiAgIyBQcm90b24gY29uY2VudHJhdGlvbgogIEggPSAxMF4tcEgKICAKICAjIElub3JnYW5pYyBjYXJib25hdGUKICBDTzMuZnJlZSA9IGtIICogcENPMiAqIChIXjIgKyBrYzEgKiBIICsga2MxICoga2MyKSAvIEheMgogIAogICMgQm91bmQgY2FyYm9uCiAgQ08yLmJvdW5kID0gQS50b3QqeEEgKmsxKmsyKihiZXRhMSpwQ08yICsgMipiZXRhMipwQ08yXjIpLygoMSArIGJldGExKnBDTzIgKyBiZXRhMipwQ08yXjIpKmsxKmsyICsgazEqSCArIEheMikKICAKICByZXR1cm4oQ08zLmZyZWUgKyBDTzIuYm91bmQpCn0KCnBILnhBLnBDTzIuQS5rLmJldGEuTmEgPSBmdW5jdGlvbih4QSwgUCwgQXQsIGsxLCBrMiwgYmV0YTEsIGJldGEyLCBOYSl7CiAgIyBDb25zdGFudHM6IGNhcmJvbmF0ZSBhbmQgd2F0ZXIgY2hlbWlzdHJ5IAogIGtIID0gMy40ZS0yOyAjIE0vYXRtCiAga2MxID0gMTBeLTYuMwogIGtjMiA9IDEwXi0xMC4zCiAga3cgPSAxZS0xNAogIAogICMgUG9seW5vbWlhbCByb290CiAgeDUgPSAxCiAgeDQgPSBrMSArIE5hICsgMipBdCp4QSAKICB4MyA9IGsxKmsyIC0ga3cgKyBrMSpOYSArIGJldGExKmsxKmsyKlAgLSBrYzEqa0gqUCArCiAgICAgIGJldGEyKmsxKmsyKlBeMiArIDIqQXQqazEqeEEgLSAyKkF0KmsyKnhBCiAgeDIgPSAoLWsxKSprdyArIGsxKmsyKk5hIC0gazEqa2MxKmtIKlAgLSAyKmtjMSprYzIqa0gqUCArIGJldGExKmsxKmsyKk5hKlAgKyBiZXRhMiprMSprMipOYSpQXjIgLQogICAgICAyKkF0KmsxKmsyKnhBICsgMipBdCpiZXRhMSprMSprMipQKnhBICsgMipBdCpiZXRhMiprMSprMipQXjIqeEEKICB4MSA9ICgtazEpKmsyKmt3IC0gazEqazIqa2MxKmtIKlAgLSAyKmsxKmtjMSprYzIqa0gqUCAtIGJldGExKmsxKmsyKmt3KlAgLQogICAgICBiZXRhMSprMSprMiprYzEqa0gqUF4yIC0gYmV0YTIqazEqazIqa3cqUF4yIC0gYmV0YTIqazEqazIqa2MxKmtIKlBeMwogIHgwID0gLSAyKmsxKmsyKmtjMSprYzIqa0gqUCAtIDIqYmV0YTEqazEqazIqa2MxKmtjMiprSCpQXjIgLQogICAgIDIqYmV0YTIqazEqazIqa2MxKmtjMiprSCpQXjMKICByb290cyA9IHBvbHlyb290KGMoeDAsIHgxLCB4MiwgeDMsIHg0LCB4NSkpCiAgCiAgIyBPbmx5IHRoZSByZWFsIGFuZCBwb3NpdGl2ZSByb290cwogIEggPSByb290c1thYnMoSW0ocm9vdHMpKSA8IDFlLThdCiAgSCA9IFJlKEhbUmUoSCkgPiAwXSkKICAKICAjIEl0IGlzIHBvc3NpYmxlIGZvciBtdWx0aXBsZSByb290cyB0byBzYXRpc2Z5IHRoZSBzb2x1dGlvbi4gVHlwaWNhbCBwSCBpcyBnb2luZyB0byBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gNy04CiAgIyBIID0gSFt3aGljaC5taW4oYWJzKC1sb2cxMChIKSAtIDcpKV0KCiAgcmV0dXJuKC1sb2cxMChIWzFdKSkKfQoKcENPMi54QS5wSC5BLmsuYmV0YS5OYSA9IGZ1bmN0aW9uKHhBLCBwSCwgQXQsIGsxLCBrMiwgYmV0YTEsIGJldGEyLCBOYSwgcENPMi5wcmV2KXsKICAjIENvbnN0YW50czogY2FyYm9uYXRlIGFuZCB3YXRlciBjaGVtaXN0cnkgCiAga0ggPSAzLjRlLTI7ICMgTS9hdG0KICBrYzEgPSAxMF4tNi4zCiAga2MyID0gMTBeLTEwLjMKICBrdyA9IDFlLTE0CiAgIyBQcm90b24gY29uY2VudHJhdGlvbgogIEggPSAxMF4tcEgKICAKICAjIFBvbHlub21pYWwgcm9vdAogIHgzID0gKC1iZXRhMikqSCprMSprMiprYzEqa0ggLSAyKmJldGEyKmsxKmsyKmtjMSprYzIqa0gKICB4MiA9IGJldGEyKkheMyprMSprMiAtIGJldGExKkgqazEqazIqa2MxKmtIIC0gMipiZXRhMSprMSprMiprYzEqa2MyKmtIIC0KICAgICAgYmV0YTIqSCprMSprMiprdyArIGJldGEyKkheMiprMSprMipOYSArIDIqQXQqYmV0YTIqSF4yKmsxKmsyKnhBCiAgeDEgPSBiZXRhMSpIXjMqazEqazIgLSBIXjMqa2MxKmtIIC0gSF4yKmsxKmtjMSprSCAtIEgqazEqazIqa2MxKmtIIC0gMipIXjIqa2MxKmtjMiprSCAtIDIqSCprMSprYzEqa2MyKmtIIC0KICAgICAgMiprMSprMiprYzEqa2MyKmtIIC0gYmV0YTEqSCprMSprMiprdyArIGJldGExKkheMiprMSprMipOYSArCiAgICAgIDIqQXQqYmV0YTEqSF4yKmsxKmsyKnhBCiAgeDAgPSBIXjUgKyBIXjQqazEgKyBIXjMqazEqazIgLSBIXjMqa3cgLSBIXjIqazEqa3cgLSBIKmsxKmsyKmt3ICsKICAgICAgSF40Kk5hICsgSF4zKmsxKk5hICsgSF4yKmsxKmsyKk5hICsgMipBdCpIXjQqeEEgKyAyKkF0KkheMyprMSp4QSAtCiAgICAgIDIqQXQqSF4zKmsyKnhBIC0gMipBdCpIXjIqazEqazIqeEEKICByb290cyA9IHBvbHlyb290KGMoeDAsIHgxLCB4MiwgeDMpKQogIAogICMgT25seSB0aGUgcmVhbCBhbmQgcG9zaXRpdmUgcm9vdHMKICBwQ08yID0gcm9vdHNbYWJzKEltKHJvb3RzKSkgPCAxZS04XQogIHBDTzIgPSBSZShwQ08yW1JlKHBDTzIpID4gMF0pCiAgIyBUaGVyZSBhcmUgY2FzZXMgb2YgbXVsdGllcGwgcm9vdHMuIEZpbmQgdGhlIG9uZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIHByZXZpb3VzIGtub3duIHZhbHVlCiAgcENPMiA9IHBDTzJbd2hpY2gubWluKGFicyhsb2cxMChwQ08yKSAtIGxvZzEwKHBDTzIucHJldikpKV0KICAKICByZXR1cm4ocENPMikKfQoKcEguRElDLnhBLnBDTzIuQS5rLmJldGEgPSBmdW5jdGlvbihESUMsIHhBLCBQLCBBdCwgazEsIGsyLCBiZXRhMSwgYmV0YTIpewogICMgQ29uc3RhbnRzOiBjYXJib25hdGUgYW5kIHdhdGVyIGNoZW1pc3RyeSAKICBrSCA9IDMuNGUtMjsgIyBNL2F0bQogIGtjMSA9IDEwXi02LjMKICBrYzIgPSAxMF4tMTAuMwogIGt3ID0gMWUtMTQKICAKICAjIFBvbHlub21pYWwgcm9vdAogIHg0ID0gKERJQyAtIGtIKlApCiAgeDMgPSAoRElDKmsxIC0gazEqa0gqUCAtIGtjMSprSCpQKQogIHgyID0gKERJQyprMSprMiArIGJldGExKkRJQyprMSprMipQIC0gazEqazIqa0gqUCAtIGsxKmtjMSprSCpQIC0ga2MxKmtjMiprSCpQICsgYmV0YTIqRElDKmsxKmsyKlBeMiAtIAogICAgYmV0YTEqazEqazIqa0gqUF4yIC0gYmV0YTIqazEqazIqa0gqUF4zIC0gQXQqYmV0YTEqazEqazIqUCp4QSAtIDIqQXQqYmV0YTIqazEqazIqUF4yKnhBKQogIHgxID0gKCgtazEpKmsyKmtjMSprSCpQIC0gazEqa2MxKmtjMiprSCpQIC0gYmV0YTEqazEqazIqa2MxKmtIKlBeMiAtIAogICAgICAgIGJldGEyKmsxKmsyKmtjMSprSCpQXjMpCiAgeDAgPSAoLWsxKSprMiprYzEqa2MyKmtIKlAgLSBiZXRhMSprMSprMiprYzEqa2MyKmtIKlBeMiAtIGJldGEyKmsxKmsyKmtjMSprYzIqa0gqUF4zCiAgcm9vdHMgPSBwb2x5cm9vdChjKHgwLCB4MSwgeDIsIHgzLCB4NCkpCiAgCiAgIyBPbmx5IHRoZSByZWFsIGFuZCBwb3NpdGl2ZSByb290cwogIEggPSByb290c1thYnMoSW0ocm9vdHMpKSA8IDFlLThdCiAgSCA9IFJlKEhbUmUoSCkgPiAwXSkKICByZXR1cm4oLWxvZzEwKEgpKQp9CgpwQ08yLkRJQy54QS5wSC5BLmsuYmV0YSA9IGZ1bmN0aW9uKERJQywgeEEsIHBILCBBdCwgazEsIGsyLCBiZXRhMSwgYmV0YTIpewogICMgQ29uc3RhbnRzOiBjYXJib25hdGUgYW5kIHdhdGVyIGNoZW1pc3RyeSAKICBrSCA9IDMuNGUtMjsgIyBNL2F0bQogIGtjMSA9IDEwXi02LjMKICBrYzIgPSAxMF4tMTAuMwogIGt3ID0gMWUtMTQKICAKICBIID0gMTBeLXBICiAgCiAgIyBQb2x5bm9taWFsIHJvb3QKICB4MyA9ICgoLWJldGEyKSpIXjIqazEqazIqa0ggLSBiZXRhMipIKmsxKmsyKmtjMSprSCAtIGJldGEyKmsxKmsyKmtjMSprYzIqa0gpCiAgeDIgPSAoYmV0YTIqRElDKkheMiprMSprMiAtIGJldGExKkheMiprMSprMiprSCAtIGJldGExKkgqazEqazIqa2MxKmtIIC0gCiAgICAgICAgYmV0YTEqazEqazIqa2MxKmtjMiprSCAtIDIqQXQqYmV0YTIqSF4yKmsxKmsyKnhBKQogIHgxID0gKGJldGExKkRJQypIXjIqazEqazIgLSBIXjQqa0ggLSBIXjMqazEqa0ggLSBIXjIqazEqazIqa0ggLSBIXjMqa2MxKmtIIC0gCiAgICAgICAgSF4yKmsxKmtjMSprSCAtIEgqazEqazIqa2MxKmtIIC0gSF4yKmtjMSprYzIqa0ggLSBIKmsxKmtjMSprYzIqa0ggLSAKICAgICAgICBrMSprMiprYzEqa2MyKmtIIC0gQXQqYmV0YTEqSF4yKmsxKmsyKnhBKQogIHgwID0gRElDKkheNCArIERJQypIXjMqazEgKyBESUMqSF4yKmsxKmsyCiAgcm9vdHMgPSBwb2x5cm9vdChjKHgwLCB4MSwgeDIsIHgzKSkKICAKICAjIE9ubHkgdGhlIHJlYWwgYW5kIHBvc2l0aXZlIHJvb3RzCiAgcENPMiA9IHJvb3RzW2FicyhJbShyb290cykpIDwgMWUtOF0KICBwQ08yID0gUmUocENPMltSZShwQ08yKSA+IDBdKQogIHJldHVybihwQ08yKQp9CgojIFRoZXJlIGFyZSBjYXNlcyBpbiB0aGUgcHJvY2VzcyB3aGVyZSBib3RoIHBIIGFuZCBwQ08yIGFyZSB1bmtub3duLiAKIyBGb3IgdGhvc2UgY2FzZXMsIGJvdGggdmFyaWFibGVzIGNhbiBiZSBzb2x2ZWQgdG9ndGhlciwgYnV0IGl0IGxlYWRzIHRvIGNvdXBsZWQgbm9ubGluZWFyIHJvb3QgZmluZGluZyBwcm9ibGVtcy4gCiMgSW5pdGlhbCB0ZXN0aW5nIG9mIHRoZSBlcXVhdGlvbnMgaGFzIGZvdW5kIHRoYXQgdXNpbmcgYW4gaW5pdGlhbCBndWVzcyBvZiBwSCAoc3VjaCBhcyB0aGUgcEggYXQgdGhlIGltbWVkaWF0ZWx5IHByZXZpb3VzIHN0YXRlIG9mIGNoYXJnZSkgbGVhZHMgdG8gYSBnb29kIGVub3VnaCBlc3RpbWF0ZSBvZiB0aGUgcEggdG8gc29sdmUgcENPMi4KcEguaXQuZ3Vlc3MuRElDLkF0LmsuYmV0YSA9IGZ1bmN0aW9uKHBILmd1ZXNzLCB4QS5uZXh0LCBESUMsIEEudG90LCBrMSwgazIsIGJldGExLCBiZXRhMiwgTmEpewogICMgSXRlcmF0ZXMgdG8gc29sdmUgdGhlIHBIIGFuZCBwQ08yIGF0IHRoZSBuZXh0IGVsZWN0cm9jaGVtaWNhbCB0aW1lIHN0ZXAsIAogICMgZ2l2ZW4geEEgYW5kIERJQyBhbmQgYW4gaW5pdGlhbCBndWVzcyAodGhlIHBIIGF0IHRoZSBwcmV2aW91cyB0aW1lIHN0ZXApCiAgcENPMi5pdCA9IGMoKTsgcEguaXQgPSBjKHBILmd1ZXNzKQogIHBDTzIuaXQgPSBwQ08yLkRJQy54QS5wSC5BLmsuYmV0YShESUMgPSBESUMsIHhBID0geEEubmV4dCwgcEggPSBwSC5pdCwgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMikKICBmb3IobiBpbiAyOjc0KXsKICAgIHBILml0W25dID0gcEgueEEucENPMi5BLmsuYmV0YS5OYSh4QSA9IHhBLm5leHQsIFAgPSBwQ08yLml0W24gLSAxXSwgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkKICAgIHBDTzIuaXRbbl0gPSBwQ08yLkRJQy54QS5wSC5BLmsuYmV0YShESUMgPSBESUMsIHhBID0geEEubmV4dCwgcEggPSBwSC5pdFtuXSwgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMikKICB9IAogIG4gPSA3OjUKICBwSC5pdFtuXSA9IHBILnhBLnBDTzIuQS5rLmJldGEuTmEoeEEgPSB4QS5uZXh0LCBQID0gcENPMi5pdFtuIC0gMV0sIEF0ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgIyBEdWUgdG8gc29tZSBvc2NpbGxhdG9yeSBpbnN0YWJpbGl0aWVzIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMsIHRha2UgdGhlIGxhc3QgMjUgYW5kIHVzZSB0aGUgdmFsdWUgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBndWVzcwogIHBILnJlcyA9IHBILml0WzUwOjc1XQogIHBILnJlcyA9IHBILnJlc1t3aGljaC5taW4oYWJzKHBILnJlcykgLSBwSC5ndWVzcyldCiAgcmV0dXJuKHBILnJlcykKfQpgYGAKCmBgYHtyIFBDRVQgRGVyaXZlZCBGdW5jdGlvbnM6IFByb2Nlc3MgQ29uZGl0aW9uc30KIyBEZXJpdmVkIGZ1bmN0aW9ucwojIERJQyBkaWZmZXJlbmNlOiBDTzIvTCpjeWNsZSAtIHRoaXMgaXMgYSBnb29kIGZpcnN0IGNoZWNrIGZvciB0aGUgY29uZGl0aW9uIHRvIGVuc3VyZSB0aGF0IENPMiBpcywgaW4gZmFjdCwgY2FwdHVyZWQsIHJlcHJlc2VudGVkIGJ5IGEgcG9zaXRpdmUgdmFsdWUuCkRJQy5kaWZmID0gZnVuY3Rpb24oTmEsIEEsIGJldGExLCBiZXRhMiwgazEsIGsyLCBwQ08yLmluLCBwQ08yLm91dCl7CiAgIyBDb25zdGFudHMKICB4QS5saW0gPSBjKDAuMDI1LCAwLjk3NSkKICAjIHBDTzIuaW4gPSAwLjE7IHBDTzIub3V0ID0gMQogIAogICMgQWJzb3JwdGlvbjogbG93IFAsIGhpZ2ggeEEKICBzdGFydC5zb2xuID0gZGF0YS5mcmFtZShwLkNPMiA9IHBDTzIuaW4sIHhBID0gbWF4KHhBLmxpbSkpCiAgc3RhcnQuc29sbiRwSCA9IHBILnhBLnBDTzIuQS5rLmJldGEuTmEoeEEgPSBzdGFydC5zb2xuJHhBLCBQID0gc3RhcnQuc29sbiRwLkNPMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdCA9IEEsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgc3RhcnQuc29sbiRESUMgPSBESUMueEEucENPMi5wSC5BLmsuYmV0YSh4QSA9IHN0YXJ0LnNvbG4keEEsIHBDTzIgPSBzdGFydC5zb2xuJHAuQ08yLCBwSCA9IHN0YXJ0LnNvbG4kcEgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRvdCA9IEEsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIpCiAgCiAgIyBEZXNvcnB0aW9uOiBoaWdoIFAsIGxvdyB4QQogIHN0b3Auc29sbiA9IGRhdGEuZnJhbWUocC5DTzIgPSBwQ08yLm91dCwgeEEgPSBtaW4oeEEubGltKSkKICBzdG9wLnNvbG4kcEggPSBwSC54QS5wQ08yLkEuay5iZXRhLk5hKHhBID0gc3RvcC5zb2xuJHhBLCBQID0gc3RvcC5zb2xuJHAuQ08yLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0ID0gQSwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkKICBzdG9wLnNvbG4kRElDID0gRElDLnhBLnBDTzIucEguQS5rLmJldGEoeEEgPSBzdG9wLnNvbG4keEEsIHBDTzIgPSBzdG9wLnNvbG4kcC5DTzIsIHBIID0gc3RvcC5zb2xuJHBILCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSBBLCBrMSA9IGsxLCBrMiA9IGsyLCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyKQogIAogICMgQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlCiAgRElDLmRpZmYgPSBzdGFydC5zb2xuJERJQyAtIHN0b3Auc29sbiRESUMKICByZXR1cm4oRElDLmRpZmYpCn0KCiMgTWluaW11bSBwYXJ0aWFsIHByZXNzdXJlIG9mIHRoZSBsZWFuIGdhcwpwQ08yLmxlYW4gPSBmdW5jdGlvbihOYSwgQSwgYmV0YTEsIGJldGEyLCBrMSwgazIsIHBDTzIub3V0KXsKICAjIENvbnN0YW50cwogIHhBLmxpbSA9IGMoMC4wMjUsIDAuOTc1KQogIAogICMgQ2FsY3VsYXRlIHRoZSBESUMgb2YgdGhlIG91dGxldCBhZnRlciBjb21wbGV0ZSBkZXNvcnB0aW9uOiBoaWdoIFAsIGxvdyB4QQogIHN0b3Auc29sbiA9IGRhdGEuZnJhbWUocC5DTzIgPSBwQ08yLm91dCwgeEEgPSBtaW4oeEEubGltKSkKICBzdG9wLnNvbG4kcEggPSBwSC54QS5wQ08yLkEuay5iZXRhLk5hKHhBID0gc3RvcC5zb2xuJHhBLCBQID0gc3RvcC5zb2xuJHAuQ08yLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0ID0gQSwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkKICBzdG9wLnNvbG4kRElDID0gRElDLnhBLnBDTzIucEguQS5rLmJldGEoeEEgPSBzdG9wLnNvbG4keEEsIHBDTzIgPSBzdG9wLnNvbG4kcC5DTzIsIHBIID0gc3RvcC5zb2xuJHBILCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSBBLCBrMSA9IGsxLCBrMiA9IGsyLCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyKQogIAogICMgQ2FsY3VsYXRlIHRoZSBwQ08yIHdoZW4gZnVsbHkgcmVkdWNlZCwgaG9sZGluZyBESUMgY29uc3RhbnQuIER1ZSB0byB0aGUgbmVlZCBmb3IgYSBwcmV2aW91cyBjYXNlLCBydW4gaW4gfjUgc3RlcHMKICBvdXQuc29sbiA9IGRhdGEuZnJhbWUoRElDID0gc3RvcC5zb2xuJERJQywgeEEgPSBzZXEoZnJvbSA9IG1pbih4QS5saW0pLCB0byA9IG1heCh4QS5saW0pLCBsZW5ndGgub3V0ID0gNSkpCiAgIyBMb29wIHRoZSBwSCBhbmQgcENPMiBzaW11bHRhbmVvdXNseQogIGxvb3AucEggPSBwSC5pdC5ndWVzcy5ESUMuQXQuay5iZXRhKHBILmd1ZXNzID0gc3RvcC5zb2xuJHBIWzFdLCB4QS5uZXh0ID0gb3V0LnNvbG4keEFbMV0sIERJQyA9IG91dC5zb2xuJERJQ1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRvdCA9IEEsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgbG9vcC5wQ08yID0gcENPMi54QS5wSC5BLmsuYmV0YS5OYSh4QSA9IG91dC5zb2xuJHhBWzFdLCBwSCA9IGxvb3AucEhbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdCA9IEEsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENPMi5wcmV2ID0gc3RvcC5zb2xuJHAuQ08yKQogIGZvcihpIGluIDI6NSl7CiAgICBsb29wLnBIW2ldID0gcEguaXQuZ3Vlc3MuRElDLkF0LmsuYmV0YShwSC5ndWVzcyA9IGxvb3AucEhbaS0xXSwgeEEubmV4dCA9IG91dC5zb2xuJHhBW2ldLCBESUMgPSBvdXQuc29sbiRESUNbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRvdCA9IEEsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgICBsb29wLnBDTzJbaV0gPSBwQ08yLnhBLnBILkEuay5iZXRhLk5hKHhBID0gb3V0LnNvbG4keEFbaV0sIHBIID0gbG9vcC5wSFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXQgPSBBLCBrMSA9IGsxLCBrMiA9IGsyLCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyLCBOYSA9IE5hLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENPMi5wcmV2ID0gbG9vcC5wQ08yW2ktMV0pCiAgICAKICB9CiAgcmV0dXJuKGxvb3AucENPMltpXSkKfQoKYGBgCgoKUGVuYWx0eSBmdW5jdGlvbjogbG9naXN0aWMgd2VpZ2h0aW5nIGZ1bmN0aW9uIHN1Y2ggdGhhdCBmb3IgdmFsdWVzIHdoZXJlIDkwJSBvZiB0aGUgQ08yIGlzIGNhcHR1cmVkLCB0aGUgd2VpZ2h0IGlzIDEsIGJ1dCB3aGVuIGxlc3MgQ08yIGlzIGNhcHR1cmVkLCB0aGUgd2VpZ2h0IGluY3JlYXNlcyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgY2hhbmdlIG9uIHRoZSBtaW5pbXVtIHdvcmsgb2Ygc2VwYXJhdGlvbi4KVGhlIGh5cGVycGFyYW1ldGVycyBMLCBrLCBhbmQgeDAgb2YgdGhlIGxvZ2lzdGljIGNvbXBvbmVudCBvZiB0aGUgd2VpZ2h0aW5nIGZ1bmN0aW9uIHdlcmUgdHVuZWQgYnkgZml0dGluZyB0byBhIHZhcmlldHkgb2YgbWluaW11bSBsZWFuIGdhcyBwcmVzc3VyZXMgb24gdGhlIHJhbmdlIG9mIDAuMDE2IHRvIDIuNSBhdG0gYW5kIHRoZW4gc2VsZWN0ZWQgYXMgdGhlIG1vZGFsIHZhbHVlLgpUaGUgbG9naXN0aWMgZnVuY3Rpb24gd2FzIHR1bmVkIHN1Y2ggdGhhdCB0aGUgZ3Jvd3RoIHJhdGUgc3RlZXBuZXNzIGNhcHR1cmVkIHRoZSByYW5nZSBvZiAwIHRvIDkwJSBjYXB0dXJlOyB3aGVuIG5vIENPMiBjb3VsZCBiZSBjYXB0dXJlZCwgdGhlIHdlaWdodCBpcyBhcHBsaWVkIGZ1bGx5LgoKQSBwZW5hbHR5IGZ1bmN0aW9uIGlzIG5vdCBuZWNlc3NhcnkgZm9yIHRoZSBmbHV4IGJlY2F1c2UgaW5zdWZmaWNpZW50IGNhcHR1cmUgd291bGQgbWFuaWZlc3QgYXMgbmVnYXRpdmUgZmx1eGVzLiBJdCBtYXkgc3RpbGwgc2hvdyB1cCBpbiB0aGUgUGFyZXRvIGZyb250aWVyLCBidXQgaXQgY2FuIGVhc2lseSBiZSBmaWx0ZXJlZCBvdXQsIHVubGlrZSB0aGUgY2FzZXMgd2l0aCB0aGUgZW5lcmd5IGRlbWFuZC4KCkZ1cnRoZXIgdHVuaW5nIG9mIHRoZSBleGFjdCB2YWx1ZSBvZiBMIGlzIGJhc2VkIG9uIHRoZSBtaW5pbXVtbSBlbmVyZ3kgZGVtYW5kIGZvciB0aGUgc3BlY2lmaWMgbGVhbiBnYXMgbWluaW11bS4KCmBgYHtyfQpHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl9XZWlnaHRUdW5pbmdTZXQuY3N2JykKCiMgT3JpZ2luYWwgd2VpZ2h0aW5nIGZ1bmN0aW9uOiBhZGp1c3QgYnkgdGhlIG1pbmltdW0gZW5lcmd5IGRlbWFuZCwgc2ltcGxpZmllZAp3ZWlnaHQuZnVuID0gZnVuY3Rpb24ocENPMi5sZWFuKXsKICAjIE1heGltdW0gd2VpZ2h0CiAgd2VpZ2h0Lm1heCA9IGxvZygxLzEwKSAvIGxvZyhwQ08yLmxlYW4vMC4xNSkKICAjIExvZ2lzdGljIGZ1bmN0aW9uCiAgTCA9IHdlaWdodC5tYXggLSAwLjk4CiAgayA9IDI2NzsgeDAgPSAwLjA3MQogICMgZGF0YS5mcmFtZSh3ZWlnaHQubWF4KQogIHJldHVybihMLygxICsgZXhwKC1rICogKHBDTzIubGVhbiAtIHgwKSkpICsgMSkKfQoKIyBDYWxjdWxhdGUgd2VpZ2h0CkdQYXIuYWxsJHdlaWdodCA9IHdlaWdodC5mdW4oR1Bhci5hbGwkcENPMi5sZWFuKQoKZ2dwbG90KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCp3ZWlnaHQgPCAxMDApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwQ08yLmxlYW4sIHkgPSB3ZWlnaHQpKSArCiAgZmFjZXRfZ3JpZCh+KHBDTzIubGVhbiA+PSAwLjAxNSksIHNjYWxlcyA9ICdmcmVlX3gnKSArCiAgc2NhbGVfeF9sb2cxMCgpICsgbGFicyh5ID0gJ1NpbXBsaWZpZWQgV2VpZ2h0JykKZ2dwbG90KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCp3ZWlnaHQgPCAxMDApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwQ08yLmxlYW4sIHkgPSBFbmVyZ3kua0oubW9sKSkgKwogIGZhY2V0X2dyaWQofihwQ08yLmxlYW4gPj0gMC4wMTUpLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIHNjYWxlX3hfbG9nMTAoKSArIGxhYnMoeSA9ICdVbndlaWdodGVkIEVuZXJneScpCmdncGxvdChmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wqd2VpZ2h0IDwgMTAwKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcENPMi5sZWFuLCB5ID0gRW5lcmd5LmtKLm1vbCp3ZWlnaHQpKSArCiAgZmFjZXRfZ3JpZCh+KHBDTzIubGVhbiA+PSAwLjAxNSksIHNjYWxlcyA9ICdmcmVlX3gnKSArCiAgc2NhbGVfeF9sb2cxMCgpICsgbGFicyh5ID0gJ1NpbXBsZSBXZWlnaHRlZCBFbmVyZ3knKQoKCmBgYAoKU2ltcGxlIHdlaWdodGVkIGVuZXJneSBpcyBub3QgZW5vdWdoIG9mIGEgcGVuYWx0eTsgdGhlIG1pbmltdW0gZW5lcmd5IGZvciBzeXN0ZW1zIHRoYXQgZG8gbm90IGNhcHR1cmUgPjkwJSBvZiB0aGUgQ08yIGFyZSBzdGlsbCBzaG93aW5nIGxvd2VyIGVuZXJneSBkZW1hbmRzLiAKClVzaW5nIHRoZSBjb21wbGV0ZSBleHByZXNzaW9uIGZvciBtaW5pbXVtIGVuZXJneSBkZW1hbmQgaW5zdGVhZCBvZiB0aGUgc2ltcGxpZmllZCBmb3JtLCB3aGljaCBtYWtlcyBhIG51bWJlciBvZiBhc3N1bXB0aW9ucyBhYm91dCBuZWdsaWdsYmUgdGVybXMuCgpNaW5pbXVtIGVuZXJneSBkZW1hbmQ6CiQkIFJUIFxzdW0gW25fe0NPXzJ9IFwgbG4oeV97Q09fMn0pICsgIG5fey1DT18yfSBcIGxuKHlfey1DT18yfSldX3tvdXRsZXR9IC0gW25fe0NPXzJ9IFwgbG4oeV97Q09fMn0pICsgIG5fey1DT18yfSBcIGxuKHlfey1DT18yfSldX3tpbmxldH0kJAoKU2luY2UgdGhlIGNvbmNlcm4gaXMgb25seSB0aGUgcmF0aW8gZm9yIHRoZSB3ZWlnaHRpbmcgZmFjdG9yLCB0aGVuIGNhbiBhc3N1bWUgdGhlICRSVCQgdGVybSBjYW5jZWxzLgoKVGhlIGlubGV0IHRlcm0gaXMgY29uc3RhbnQgYXQgMC4xNSBhdG0gYW5kIHRoZSByZWZlcmVuY2UgcG9pbnQgaXMgOTAlIHJlZHVjdGlvbiBpbiB0aGUgcGFydGlhbCBwcmVzc3VyZSBpbiB0aGUgbGVhbiBnYXMuClRoZSBjYWxjdWxhdGlvbiBpcyBiYXNlZCBvbiBtYXNzIGJhbGFuY2UsIGFzc3VtaW5nIHRoYXQgdGhlIHZvbHVtZSBhZGp1c3RlZCB0byBtYWludGFpbiBhIHRvdGFsIHByZXNzdXJlIG9mIDEgYXRtLgoKQXNzdW1pbmcgMSB0b3RhbCBtb2xlIG9mIGdhcyBpcyBwcm9jZXNzZWQgYXQgdGhlIHJlZmVyZW5jZSBwb2ludDoKKiBJbmxldDogMC4xNSBtb2wgQ08yLCAwLjg1IG1vbCBub3QgQ08yCiogTGVhbiBnYXM6IDAuODUgbW9sIG5vdCBDTzIsICgwLjAxNSowLjg1KS8oMSAtIDAuMDE1KSBtb2wgQ08yCiogRW5yaWNoZWQgZ2FzOiAxIC0gKDAuMDE1KjAuODUpLygxIC0gMC4wMTUpIG1vbCBDTzIsIDAuMSUgbm90IENPMgoKVGhlIGxlYW4gZ2FzIGFuZCBlbnJpY2hlZCBnYXMgd2lsbCBjaGFuZ2UgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gd2l0aCBhIHNpbWlsYXIgbWFzcyBiYWxhbmNlLgoKYGBge3J9CndlaWdodC5mdW4yID0gZnVuY3Rpb24ocENPMi5sZWFuKXsKICAjIElkZWFsCiAgbi5pbmxldCA9IGMoMC4xNSwgMC44NSkKICBuLmxlYW4gPSBjKDAuODUsIDAuMDE1KjAuODUvKDEgLSAwLjAxNSkpCiAgbi5lbnJpY2ggPSBjKDAuMDAxKigxIC0gMC4wMTUqMC44NS8oMSAtIDAuMDE1KSksIDEgLSAwLjAxNSowLjg1LygxIC0gMC4wMTUpKQogIAogIEUuaWRlYWwgPSBzdW0obi5lbnJpY2gqbG9nKG4uZW5yaWNoL3N1bShuLmVucmljaCkpICsgCiAgICAgICAgICAgICAgICAgIG4ubGVhbipsb2cobi5sZWFuL3N1bShuLmxlYW4pKSAtIAogICAgICAgICAgICAgICAgICBuLmlubGV0KmxvZyhuLmlubGV0L3N1bShuLmlubGV0KSkpCgogICMgQWN0dWFsOiBzZXBhcmF0ZSBpbnRvIDMgY2FzZXM6CiAgRS50cnUgPSByZXAoeCA9IDAsIHRpbWVzID0gbGVuZ3RoKHBDTzIubGVhbikpCiAgIyBUaGlyZCBjYXNlOiBpZiB0aGUgbGVhbiBnYXMgcHJlc3N1cmUgaXMgYWJvdmUgMSwgaS5lLiBpdCBwcmVzc3VyaXplZAogIHBvczMgPSAocENPMi5sZWFuID49IDAuOTkpCiAgIyBTZXQgdGhlIGxlYW4gZ2FzIHByZXNzdXJlIHRvIDAuOTk5LCAKICAjIHRoZW4gbXVsdGlwbHkgdGhlIHdlaWdodCBieSB0aGUgYWN0dWFsIHByZXNzdXJlIHRvIGNvcnJlY3QgdGhlIGVuZXJneTsgCiAgIyBzaW5jZSB0aGUgd2VpZ2h0IGlzIGRpdmlkZWQgYnkgdGhpcyBlbmVyZ3ksIHRoaXMgbWVhbnMgZGl2aWRpbmcgYnkgdGhlIHByZXNzdXJlCiAgc2V0LmxlYW4gPSAwLjk5OQogIG4uZW5yaWNoLmNvMiA9IChzZXQubGVhbiAtIDAuMTUpLygxIC0gc2V0LmxlYW4pCiAgbi5sZWFuID0gbi5lbnJpY2guY28yICsgMC4xNQogIG4uZW5yaWNoLmdhcyA9IDAuMDAxKm4uZW5yaWNoLmNvMgogIEUudHJ1W3BvczNdID0gKC0gc3VtKG4uaW5sZXQqbG9nKG4uaW5sZXQvc3VtKG4uaW5sZXQpKSkgKwogICAgMC44NSpsb2coMC44NS8obi5sZWFuICsgMC44NSkpICsKICAgIG4uZW5yaWNoLmdhcypsb2cobi5lbnJpY2guZ2FzLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5lbnJpY2guY28yKmxvZyhuLmVucmljaC5jbzIvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmxlYW4qbG9nKG4ubGVhbi8obi5sZWFuICsgMC44NSkpKSAvIHBDTzIubGVhbltwb3MzXQoKICAjIFNlY29uZCBjYXNlOiBpZiB0aGUgbGVhbiBnYXMgcHJlc3N1cmUgaXMgYmV0d2VlbiAwLjE1IGFuZCAxLCAKICAjIGkuZS4gdGhlIENPMiB3YXMgbW92ZWQgZnJvbSB0aGUgcHVyZSBnYXMgdG8gdGhlIGxlYW4gZ2FzCiAgcG9zMiA9IChwQ08yLmxlYW4gPj0gMC4xNSAmIHBDTzIubGVhbiA8IDAuOTkpCiAgIyBGb3IgdGhlIG1hc3MgYmFsYW5jZSB0byB3b3JrLCBnYXMgbXVzdCBoYXZlIG1vdmVkIGZyb20gdGhlIGVucmljaGVkIHN0cmVhbSB0byB0aGUgbGVhbiBnYXMKICBuLmVucmljaC5jbzIgPSAocENPMi5sZWFuW3BvczJdIC0gMC4xNSkvKDEgLSBwQ08yLmxlYW5bcG9zMl0pCiAgbi5sZWFuID0gbi5lbnJpY2guY28yICsgMC4xNQogIG4uZW5yaWNoLmdhcyA9IDAuMDAxKm4uZW5yaWNoLmNvMgogIEUudHJ1W3BvczJdID0gLSBzdW0obi5pbmxldCpsb2cobi5pbmxldC9zdW0obi5pbmxldCkpKSArCiAgICAwLjg1KmxvZygwLjg1LyhuLmxlYW4gKyAwLjg1KSkgKwogICAgbi5lbnJpY2guZ2FzKmxvZyhuLmVucmljaC5nYXMvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmVucmljaC5jbzIqbG9nKG4uZW5yaWNoLmNvMi8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4ubGVhbipsb2cobi5sZWFuLyhuLmxlYW4gKyAwLjg1KSkKICAKICAjIEZpcnN0IGNhc2U6IGlmIHRoZSBsZWFuIGdhcyBwcmVzc3VyZSBpcyBsZXNzIHRoYW4gMC4xNSwgaS5lLiBzb21lIGFtb3VudCBvZiBjYXB0dXJlIGhhcHBlbmVkCiAgcG9zMSA9IChwQ08yLmxlYW4gPCAwLjE1KQogICMgTWF0aGVtYXRpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBsZWFuIGdhcyBjYXNlLCBqdXN0IGFkanVzdGluZyB0aGUgbGVhbiBnYXMgYW5kIGVucmljaGVkIGdhcyBtYXNzIGJhbGFuY2UKICBuLmxlYW4gPSBwQ08yLmxlYW5bcG9zMV0qMC44NS8oMSAtIHBDTzIubGVhbltwb3MxXSkKICBuLmVucmljaC5jbzIgPSAwLjE1IC0gbi5sZWFuCiAgbi5lbnJpY2guZ2FzID0gMC4wMDEqbi5lbnJpY2guY28yCiAgCiAgRS50cnVbcG9zMV0gPSAtIHN1bShuLmlubGV0KmxvZyhuLmlubGV0L3N1bShuLmlubGV0KSkpICsKICAgIDAuODUqbG9nKDAuODUvKG4ubGVhbiArIDAuODUpKSArCiAgICBuLmVucmljaC5nYXMqbG9nKG4uZW5yaWNoLmdhcy8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4uZW5yaWNoLmNvMipsb2cobi5lbnJpY2guY28yLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5sZWFuKmxvZyhuLmxlYW4vKG4ubGVhbiArIDAuODUpKQogIAogICMgTWF4aW11bSB3ZWlnaHQKICB3ZWlnaHQubWF4ID0gRS5pZGVhbC9FLnRydQoKICAjIExvZ2lzdGljIGZ1bmN0aW9uCiAgTCA9IHdlaWdodC5tYXggLSAwLjk4CiAgayA9IDI2NzsgeDAgPSAwLjA3MQogICMgZGF0YS5mcmFtZSh3ZWlnaHQubWF4KQogIHJldHVybihMLygxICsgZXhwKC1rICogKHBDTzIubGVhbiAtIHgwKSkpICsgMSkKfQoKdGVzdC5wY28yID0gMTBec2VxKGZyb20gPSAtMTAsIHRvID0gMiwgYnkgPSAwLjEpCndlaWdodC50ZXN0ID0gd2VpZ2h0LmZ1bjIodGVzdC5wY28yKQpjbGFzcyA9IHJlcCgwLCBsZW5ndGgodGVzdC5wY28yKSk7IGNsYXNzW3Rlc3QucGNvMiA+PSAwLjE1XSA9IDE7IGNsYXNzW3Rlc3QucGNvMiA+PSAxXSA9IDIKZ2dwbG90KGZpbHRlcihkYXRhLmZyYW1lKHggPSB0ZXN0LnBjbzIsIHkgPSB3ZWlnaHQudGVzdCwgY2xhc3MpICkpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IHgsIHkgPSB5LCBjb2xvciA9ICh4IDwgMC4wMTUpKSkgKwogIHNjYWxlX3hfbG9nMTAoKSArIGZhY2V0X3dyYXAofmNsYXNzLCBzY2FsZXMgPSAnZnJlZScpCnJtKHRlc3QucGNvMiwgd2VpZ2h0LnRlc3QsIGNsYXNzKQoKIyBDYWxjdWxhdGUgd2VpZ2h0CkdQYXIuYWxsJHdlaWdodDIgPSB3ZWlnaHQuZnVuMihHUGFyLmFsbCRwQ08yLmxlYW4pCgpnZ3Bsb3QoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sKndlaWdodDIgPCAxMDApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwQ08yLmxlYW4sIHkgPSB3ZWlnaHQyKSkgKwogIGZhY2V0X2dyaWQofihwQ08yLmxlYW4gPj0gMC4wMTUpLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIHNjYWxlX3hfbG9nMTAoKSArIGxhYnMoeSA9ICdDb21wbGV0ZSBXZWlnaHQnKQpnZ3Bsb3QoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sKndlaWdodDIgPCAxMDApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwQ08yLmxlYW4sIHkgPSBFbmVyZ3kua0oubW9sKSkgKwogIGZhY2V0X2dyaWQofihwQ08yLmxlYW4gPj0gMC4wMTUpLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIHNjYWxlX3hfbG9nMTAoKSArIGxhYnMoeSA9ICdVbndlaWdodGVkIEVuZXJneScpCmdncGxvdChmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wqd2VpZ2h0MiA8IDEwMCkpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IHBDTzIubGVhbiwgeSA9IEVuZXJneS5rSi5tb2wqd2VpZ2h0MikpICsKICBmYWNldF9ncmlkKH4ocENPMi5sZWFuID49IDAuMDE1KSwgc2NhbGVzID0gJ2ZyZWVfeCcpICsKICBzY2FsZV94X2xvZzEwKCkgKyBsYWJzKHkgPSAnQ29tcGxldGUgV2VpZ2h0ZWQgRW5lcmd5JykKCmBgYAoKV2hpbGUgYmV0dGVyLCB1c2luZyB0aGUgY29tcGxldGUgZW5lcmd5IGlzIG5vdCBmaXhlZCB1cG9uIHRoaXMgY29ycmVjdGlvbiBpbiB0aGF0IHRoZSBtaW5pbXVtIGVuZXJneSBpcyBzdGlsbCBhdCBhIHZhbHVlIHdoZXJlIHRoZSBmbHV4IHdvdWxkIGJlIG5lZ2F0aXZlLiBBbXBsaWZ5aW5nIGFuIGFkZGl0aW9uYWwgbXVsdGlwbGljYXRpdmUgZmFjdG9yIHRvIGFtcGxpZnkgdGhlIHdlaWdodDoKCmBgYHtyfQp3ZWlnaHQuZnVuMyA9IGZ1bmN0aW9uKHBDTzIubGVhbil7CiAgIyBJZGVhbAogIG4uaW5sZXQgPSBjKDAuMTUsIDAuODUpCiAgbi5sZWFuID0gYygwLjg1LCAwLjAxNSowLjg1LygxIC0gMC4wMTUpKQogIG4uZW5yaWNoID0gYygwLjAwMSooMSAtIDAuMDE1KjAuODUvKDEgLSAwLjAxNSkpLCAxIC0gMC4wMTUqMC44NS8oMSAtIDAuMDE1KSkKICAKICBFLmlkZWFsID0gc3VtKG4uZW5yaWNoKmxvZyhuLmVucmljaC9zdW0obi5lbnJpY2gpKSArIAogICAgICAgICAgICAgICAgICBuLmxlYW4qbG9nKG4ubGVhbi9zdW0obi5sZWFuKSkgLSAKICAgICAgICAgICAgICAgICAgbi5pbmxldCpsb2cobi5pbmxldC9zdW0obi5pbmxldCkpKQoKICAjIEFjdHVhbDogc2VwYXJhdGUgaW50byAzIGNhc2VzOgogIEUudHJ1ID0gcmVwKHggPSAwLCB0aW1lcyA9IGxlbmd0aChwQ08yLmxlYW4pKQogICMgVGhpcmQgY2FzZTogaWYgdGhlIGxlYW4gZ2FzIHByZXNzdXJlIGlzIGFib3ZlIDEsIGkuZS4gaXQgcHJlc3N1cml6ZWQKICBwb3MzID0gKHBDTzIubGVhbiA+PSAwLjk5KQogICMgU2V0IHRoZSBsZWFuIGdhcyBwcmVzc3VyZSB0byAwLjk5OSwgCiAgIyB0aGVuIG11bHRpcGx5IHRoZSB3ZWlnaHQgYnkgdGhlIGFjdHVhbCBwcmVzc3VyZSB0byBjb3JyZWN0IHRoZSBlbmVyZ3k7IAogICMgc2luY2UgdGhlIHdlaWdodCBpcyBkaXZpZGVkIGJ5IHRoaXMgZW5lcmd5LCB0aGlzIG1lYW5zIGRpdmlkaW5nIGJ5IHRoZSBwcmVzc3VyZQogIHNldC5sZWFuID0gMC45OTkKICBuLmVucmljaC5jbzIgPSAoc2V0LmxlYW4gLSAwLjE1KS8oMSAtIHNldC5sZWFuKQogIG4ubGVhbiA9IG4uZW5yaWNoLmNvMiArIDAuMTUKICBuLmVucmljaC5nYXMgPSAwLjAwMSpuLmVucmljaC5jbzIKICBFLnRydVtwb3MzXSA9ICgtIHN1bShuLmlubGV0KmxvZyhuLmlubGV0L3N1bShuLmlubGV0KSkpICsKICAgIDAuODUqbG9nKDAuODUvKG4ubGVhbiArIDAuODUpKSArCiAgICBuLmVucmljaC5nYXMqbG9nKG4uZW5yaWNoLmdhcy8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4uZW5yaWNoLmNvMipsb2cobi5lbnJpY2guY28yLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5sZWFuKmxvZyhuLmxlYW4vKG4ubGVhbiArIDAuODUpKSkgLyBwQ08yLmxlYW5bcG9zM10KCiAgIyBTZWNvbmQgY2FzZTogaWYgdGhlIGxlYW4gZ2FzIHByZXNzdXJlIGlzIGJldHdlZW4gMC4xNSBhbmQgMSwgCiAgIyBpLmUuIHRoZSBDTzIgd2FzIG1vdmVkIGZyb20gdGhlIHB1cmUgZ2FzIHRvIHRoZSBsZWFuIGdhcwogIHBvczIgPSAocENPMi5sZWFuID49IDAuMTUgJiBwQ08yLmxlYW4gPCAwLjk5KQogICMgRm9yIHRoZSBtYXNzIGJhbGFuY2UgdG8gd29yaywgZ2FzIG11c3QgaGF2ZSBtb3ZlZCBmcm9tIHRoZSBlbnJpY2hlZCBzdHJlYW0gdG8gdGhlIGxlYW4gZ2FzCiAgbi5lbnJpY2guY28yID0gKHBDTzIubGVhbltwb3MyXSAtIDAuMTUpLygxIC0gcENPMi5sZWFuW3BvczJdKQogIG4ubGVhbiA9IG4uZW5yaWNoLmNvMiArIDAuMTUKICBuLmVucmljaC5nYXMgPSAwLjAwMSpuLmVucmljaC5jbzIKICBFLnRydVtwb3MyXSA9IC0gc3VtKG4uaW5sZXQqbG9nKG4uaW5sZXQvc3VtKG4uaW5sZXQpKSkgKwogICAgMC44NSpsb2coMC44NS8obi5sZWFuICsgMC44NSkpICsKICAgIG4uZW5yaWNoLmdhcypsb2cobi5lbnJpY2guZ2FzLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5lbnJpY2guY28yKmxvZyhuLmVucmljaC5jbzIvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmxlYW4qbG9nKG4ubGVhbi8obi5sZWFuICsgMC44NSkpCiAgCiAgIyBGaXJzdCBjYXNlOiBpZiB0aGUgbGVhbiBnYXMgcHJlc3N1cmUgaXMgbGVzcyB0aGFuIDAuMTUsIGkuZS4gc29tZSBhbW91bnQgb2YgY2FwdHVyZSBoYXBwZW5lZAogIHBvczEgPSAocENPMi5sZWFuIDwgMC4xNSkKICAjIE1hdGhlbWF0aWNhbGx5IGlkZW50aWNhbCB0byB0aGUgbGVhbiBnYXMgY2FzZSwganVzdCBhZGp1c3RpbmcgdGhlIGxlYW4gZ2FzIGFuZCBlbnJpY2hlZCBnYXMgbWFzcyBiYWxhbmNlCiAgbi5sZWFuID0gcENPMi5sZWFuW3BvczFdKjAuODUvKDEgLSBwQ08yLmxlYW5bcG9zMV0pCiAgbi5lbnJpY2guY28yID0gMC4xNSAtIG4ubGVhbgogIG4uZW5yaWNoLmdhcyA9IDAuMDAxKm4uZW5yaWNoLmNvMgogIAogIEUudHJ1W3BvczFdID0gLSBzdW0obi5pbmxldCpsb2cobi5pbmxldC9zdW0obi5pbmxldCkpKSArCiAgICAwLjg1KmxvZygwLjg1LyhuLmxlYW4gKyAwLjg1KSkgKwogICAgbi5lbnJpY2guZ2FzKmxvZyhuLmVucmljaC5nYXMvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmVucmljaC5jbzIqbG9nKG4uZW5yaWNoLmNvMi8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4ubGVhbipsb2cobi5sZWFuLyhuLmxlYW4gKyAwLjg1KSkKICAKICAjIE1heGltdW0gd2VpZ2h0CiAgd2VpZ2h0Lm1heCA9IEUuaWRlYWwvRS50cnUKCiAgIyBMb2dpc3RpYyBmdW5jdGlvbgogIEwgPSB3ZWlnaHQubWF4IC0gMC45OAogIGsgPSAyNjc7IHgwID0gMC4wNzEKICAjIGRhdGEuZnJhbWUod2VpZ2h0Lm1heCkKICByZXR1cm4oMjUqTC8oMSArIGV4cCgtayAqIChwQ08yLmxlYW4gLSB4MCkpKSArIDEpCn0KCnRlc3QucGNvMiA9IDEwXnNlcShmcm9tID0gLTEwLCB0byA9IDIsIGJ5ID0gMC4xKQp3ZWlnaHQudGVzdCA9IHdlaWdodC5mdW4yKHRlc3QucGNvMikKY2xhc3MgPSByZXAoMCwgbGVuZ3RoKHRlc3QucGNvMikpOyBjbGFzc1t0ZXN0LnBjbzIgPj0gMC4xNV0gPSAxOyBjbGFzc1t0ZXN0LnBjbzIgPj0gMV0gPSAyCmdncGxvdChmaWx0ZXIoZGF0YS5mcmFtZSh4ID0gdGVzdC5wY28yLCB5ID0gd2VpZ2h0LnRlc3QsIGNsYXNzKSApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSB4LCB5ID0geSwgY29sb3IgPSAoeCA8IDAuMDE1KSkpICsKICBzY2FsZV94X2xvZzEwKCkgKyBmYWNldF93cmFwKH5jbGFzcywgc2NhbGVzID0gJ2ZyZWUnKQpybSh0ZXN0LnBjbzIsIHdlaWdodC50ZXN0LCBjbGFzcykKCiMgQ2FsY3VsYXRlIHdlaWdodApHUGFyLmFsbCR3ZWlnaHQzID0gd2VpZ2h0LmZ1bjMoR1Bhci5hbGwkcENPMi5sZWFuKQoKZ2dwbG90KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCp3ZWlnaHQzIDwgMTAwKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcENPMi5sZWFuLCB5ID0gd2VpZ2h0MykpICsKICBmYWNldF9ncmlkKH4ocENPMi5sZWFuID49IDAuMDE1KSwgc2NhbGVzID0gJ2ZyZWVfeCcpICsKICBzY2FsZV94X2xvZzEwKCkgKyBsYWJzKHkgPSAnQW1wbGlmaWVkIFdlaWdodCcpCmdncGxvdChmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wqd2VpZ2h0MyA8IDEwMCkpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IHBDTzIubGVhbiwgeSA9IEVuZXJneS5rSi5tb2wpKSArCiAgZmFjZXRfZ3JpZCh+KHBDTzIubGVhbiA+PSAwLjAxNSksIHNjYWxlcyA9ICdmcmVlX3gnKSArCiAgc2NhbGVfeF9sb2cxMCgpICsgbGFicyh5ID0gJ1Vud2VpZ2h0ZWQgRW5lcmd5JykKZ2dwbG90KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCp3ZWlnaHQzIDwgMTAwKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcENPMi5sZWFuLCB5ID0gRW5lcmd5LmtKLm1vbCp3ZWlnaHQzKSkgKwogIGZhY2V0X2dyaWQofihwQ08yLmxlYW4gPj0gMC4wMTUpLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIHNjYWxlX3hfbG9nMTAoKSArIGxhYnMoeSA9ICdBbXBsaWZpZWQgV2VpZ2h0ZWQgRW5lcmd5JykKCmBgYAoKTXVsdGlwbHlpbmcgdGhlIGxvZ2FyaXRobWljIHRlcm0gYnkgYSBmYWN0b3Igb2YgMjUgYXBwZWFycyB0byBiZSBzdWZmaWNpZW50bHkgbGFyZ2UgdG8gYWRqdXN0IHRoZSBlbmVyZ2llcyB3aXRob3V0IG92ZXJzaG9vdGluZyB0aGUgd2VpZ2h0LgoKYGBge3J9CnJtKHdlaWdodC5mdW4sIHdlaWdodC5mdW4yLCB3ZWlnaHQuZnVuMywgR1Bhci5hbGwpCmBgYAoKQXBwbHlpbmcgdGhlIHBlbmFsdHkgZnVuY3Rpb24gZGlyZWN0bHkgdG8gZW5lcmd5IGRlbWFuZAoKYGBge3IgUENFVCBEZXJpdmVkIEZ1bmN0aW9uczogRW5lcmd5IERlbWFuZH0Kd2VpZ2h0LmZ1biA9IGZ1bmN0aW9uKHBDTzIubGVhbil7CiAgIyBJZGVhbAogIG4uaW5sZXQgPSBjKDAuMTUsIDAuODUpCiAgbi5sZWFuID0gYygwLjg1LCAwLjAxNSowLjg1LygxIC0gMC4wMTUpKQogIG4uZW5yaWNoID0gYygwLjAwMSooMSAtIDAuMDE1KjAuODUvKDEgLSAwLjAxNSkpLCAxIC0gMC4wMTUqMC44NS8oMSAtIDAuMDE1KSkKICAKICBFLmlkZWFsID0gc3VtKG4uZW5yaWNoKmxvZyhuLmVucmljaC9zdW0obi5lbnJpY2gpKSArIAogICAgICAgICAgICAgICAgICBuLmxlYW4qbG9nKG4ubGVhbi9zdW0obi5sZWFuKSkgLSAKICAgICAgICAgICAgICAgICAgbi5pbmxldCpsb2cobi5pbmxldC9zdW0obi5pbmxldCkpKQoKICAjIEFjdHVhbDogc2VwYXJhdGUgaW50byAzIGNhc2VzOgogIEUudHJ1ID0gcmVwKHggPSAwLCB0aW1lcyA9IGxlbmd0aChwQ08yLmxlYW4pKQogICMgVGhpcmQgY2FzZTogaWYgdGhlIGxlYW4gZ2FzIHByZXNzdXJlIGlzIGFib3ZlIDEsIGkuZS4gaXQgcHJlc3N1cml6ZWQKICBwb3MzID0gKHBDTzIubGVhbiA+PSAwLjk5KQogICMgU2V0IHRoZSBsZWFuIGdhcyBwcmVzc3VyZSB0byAwLjk5OSwgCiAgIyB0aGVuIG11bHRpcGx5IHRoZSB3ZWlnaHQgYnkgdGhlIGFjdHVhbCBwcmVzc3VyZSB0byBjb3JyZWN0IHRoZSBlbmVyZ3k7IAogICMgc2luY2UgdGhlIHdlaWdodCBpcyBkaXZpZGVkIGJ5IHRoaXMgZW5lcmd5LCB0aGlzIG1lYW5zIGRpdmlkaW5nIGJ5IHRoZSBwcmVzc3VyZQogIHNldC5sZWFuID0gMC45OTkKICBuLmVucmljaC5jbzIgPSAoc2V0LmxlYW4gLSAwLjE1KS8oMSAtIHNldC5sZWFuKQogIG4ubGVhbiA9IG4uZW5yaWNoLmNvMiArIDAuMTUKICBuLmVucmljaC5nYXMgPSAwLjAwMSpuLmVucmljaC5jbzIKICBFLnRydVtwb3MzXSA9ICgtIHN1bShuLmlubGV0KmxvZyhuLmlubGV0L3N1bShuLmlubGV0KSkpICsKICAgIDAuODUqbG9nKDAuODUvKG4ubGVhbiArIDAuODUpKSArCiAgICBuLmVucmljaC5nYXMqbG9nKG4uZW5yaWNoLmdhcy8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4uZW5yaWNoLmNvMipsb2cobi5lbnJpY2guY28yLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5sZWFuKmxvZyhuLmxlYW4vKG4ubGVhbiArIDAuODUpKSkgLyBwQ08yLmxlYW5bcG9zM10KCiAgIyBTZWNvbmQgY2FzZTogaWYgdGhlIGxlYW4gZ2FzIHByZXNzdXJlIGlzIGJldHdlZW4gMC4xNSBhbmQgMSwgCiAgIyBpLmUuIHRoZSBDTzIgd2FzIG1vdmVkIGZyb20gdGhlIHB1cmUgZ2FzIHRvIHRoZSBsZWFuIGdhcwogIHBvczIgPSAocENPMi5sZWFuID49IDAuMTUgJiBwQ08yLmxlYW4gPCAwLjk5KQogICMgRm9yIHRoZSBtYXNzIGJhbGFuY2UgdG8gd29yaywgZ2FzIG11c3QgaGF2ZSBtb3ZlZCBmcm9tIHRoZSBlbnJpY2hlZCBzdHJlYW0gdG8gdGhlIGxlYW4gZ2FzCiAgbi5lbnJpY2guY28yID0gKHBDTzIubGVhbltwb3MyXSAtIDAuMTUpLygxIC0gcENPMi5sZWFuW3BvczJdKQogIG4ubGVhbiA9IG4uZW5yaWNoLmNvMiArIDAuMTUKICBuLmVucmljaC5nYXMgPSAwLjAwMSpuLmVucmljaC5jbzIKICBFLnRydVtwb3MyXSA9IC0gc3VtKG4uaW5sZXQqbG9nKG4uaW5sZXQvc3VtKG4uaW5sZXQpKSkgKwogICAgMC44NSpsb2coMC44NS8obi5sZWFuICsgMC44NSkpICsKICAgIG4uZW5yaWNoLmdhcypsb2cobi5lbnJpY2guZ2FzLyhuLmVucmljaC5nYXMgKyBuLmVucmljaC5jbzIpKSArIAogICAgbi5lbnJpY2guY28yKmxvZyhuLmVucmljaC5jbzIvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmxlYW4qbG9nKG4ubGVhbi8obi5sZWFuICsgMC44NSkpCiAgCiAgIyBGaXJzdCBjYXNlOiBpZiB0aGUgbGVhbiBnYXMgcHJlc3N1cmUgaXMgbGVzcyB0aGFuIDAuMTUsIGkuZS4gc29tZSBhbW91bnQgb2YgY2FwdHVyZSBoYXBwZW5lZAogIHBvczEgPSAocENPMi5sZWFuIDwgMC4xNSkKICAjIE1hdGhlbWF0aWNhbGx5IGlkZW50aWNhbCB0byB0aGUgbGVhbiBnYXMgY2FzZSwganVzdCBhZGp1c3RpbmcgdGhlIGxlYW4gZ2FzIGFuZCBlbnJpY2hlZCBnYXMgbWFzcyBiYWxhbmNlCiAgbi5sZWFuID0gcENPMi5sZWFuW3BvczFdKjAuODUvKDEgLSBwQ08yLmxlYW5bcG9zMV0pCiAgbi5lbnJpY2guY28yID0gMC4xNSAtIG4ubGVhbgogIG4uZW5yaWNoLmdhcyA9IDAuMDAxKm4uZW5yaWNoLmNvMgogIAogIEUudHJ1W3BvczFdID0gLSBzdW0obi5pbmxldCpsb2cobi5pbmxldC9zdW0obi5pbmxldCkpKSArCiAgICAwLjg1KmxvZygwLjg1LyhuLmxlYW4gKyAwLjg1KSkgKwogICAgbi5lbnJpY2guZ2FzKmxvZyhuLmVucmljaC5nYXMvKG4uZW5yaWNoLmdhcyArIG4uZW5yaWNoLmNvMikpICsgCiAgICBuLmVucmljaC5jbzIqbG9nKG4uZW5yaWNoLmNvMi8obi5lbnJpY2guZ2FzICsgbi5lbnJpY2guY28yKSkgKyAKICAgIG4ubGVhbipsb2cobi5sZWFuLyhuLmxlYW4gKyAwLjg1KSkKICAKICAjIE1heGltdW0gd2VpZ2h0CiAgd2VpZ2h0Lm1heCA9IEUuaWRlYWwvRS50cnUKCiAgIyBMb2dpc3RpYyBmdW5jdGlvbgogIEwgPSB3ZWlnaHQubWF4IC0gMC45OAogIGsgPSAyNjc7IHgwID0gMC4wNzEKICAjIGRhdGEuZnJhbWUod2VpZ2h0Lm1heCkKICByZXR1cm4oMjUqTC8oMSArIGV4cCgtayAqIChwQ08yLmxlYW4gLSB4MCkpKSArIDEpCn0KCiMgVG90YWwgZW5lcmd5IGRlbWFuZCAtIDQtc3RhZ2UgcHJvY2VzcyBmb3Igc2ltcGxpY2l0eQpFbmVyZ3kudG90ID0gZnVuY3Rpb24oazEsIGsyLCBiZXRhMSwgYmV0YTIsIEEudG90LCBOYSwgcENPMi5pbiwgcENPMi5vdXQpewogICMgQ29uc3RhbnRzCiAgeiA9IDI7IFIgPSA4LjMxNDsgVCA9IDI5ODsgRiA9IDk2NDg1OyByZXNvbHV0aW9uID0gMTUxOwogICMgcENPMi5pbiA9IDAuMTsgcENPMi5vdXQgPSAxCiAgeEEubGltID0gYygwLjAyNSwgMC45NzUpCiAgCiAgIyAxIC0+IDI6IEVsZWN0cm9jaGVtaWNhbCBveGlkYXRpb24gKHhBIGRlY3JlYXNlIHRvIGVuZHBvaW50KSwgY29uc3RhbnQgRElDCiAgIyBTdGFydGluZyBzb2x1dGlvbiBmb3IgaW5pdGlhbCBndWVzczogbG93IFAsIGhpZ2ggeEEKICBzdGFydC5zb2xuID0gZGF0YS5mcmFtZShwLkNPMiA9IHBDTzIuaW4sIHhBID0gbWF4KHhBLmxpbSkpCiAgc3RhcnQuc29sbiRwSCA9IHBILnhBLnBDTzIuQS5rLmJldGEuTmEoeEEgPSBzdGFydC5zb2xuJHhBLCBQID0gc3RhcnQuc29sbiRwLkNPMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgc3RhcnQuc29sbiRESUMgPSBESUMueEEucENPMi5wSC5BLmsuYmV0YSh4QSA9IHN0YXJ0LnNvbG4keEEsIHBDTzIgPSBzdGFydC5zb2xuJHAuQ08yLCBwSCA9IHN0YXJ0LnNvbG4kcEgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEudG90ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIpCiAgIyBBbm9kZSBwcm9ncmVzcwogIEUuYW5vZGUgPSBkYXRhLmZyYW1lKERJQyA9IHN0YXJ0LnNvbG4kRElDLCB4QSA9IHNlcShmcm9tID0gc3RhcnQuc29sbiR4QVsxXSwgdG8gPSBtaW4oeEEubGltKSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pKQogICMgTG9vcCB0byBzb2x2ZSB0aGUgaWVyYXRpb24gZnVuY3Rpb24KICBsb29wID0gcEguaXQuZ3Vlc3MuRElDLkF0LmsuYmV0YShwSC5ndWVzcyA9IHN0YXJ0LnNvbG4kcEhbMV0sIHhBLm5leHQgPSBFLmFub2RlJHhBWzFdLCBESUMgPSBFLmFub2RlJERJQ1sxXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEudG90ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgZm9yKGkgaW4gMjpsZW5ndGgoRS5hbm9kZSRESUMpKXsKICAgIGxvb3AgPSBjKGxvb3AsIHBILml0Lmd1ZXNzLkRJQy5BdC5rLmJldGEocEguZ3Vlc3MgPSBsb29wW2ktMV0sIHhBLm5leHQgPSBFLmFub2RlJHhBW2ldLCBESUMgPSBFLmFub2RlJERJQ1tpXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkpCiAgfQogICMgU29tZSBpdGVyYXRpb25zIGRvbid0IGNvbnZlcmdlIGNvbXBsZXRlbHksIGxlYWRpbmcgdG8gc2luZ2xlIHBvaW50cyB0aGF0IGRldmlhdGVkIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGN1cnZlLiBUaGlzIGlzIGNoYXJhY3Rlcml6ZWQgYnkgYSBzaW5nbGUgcG9pbnQgdGhhdCBpcyBhIGxvY2FsIG1heGltYSBvciBtaW5pbXVtLiBFbmRwb2ludHMgYXJlIGFzdXNtZWQgdG8gYmUgZ29vZAogIGxvb3AuY2hlY2subGVmdCA9IGxvb3BbMToocmVzb2x1dGlvbi0yKV0gLSBsb29wWzI6KHJlc29sdXRpb24tMSldCiAgbG9vcC5jaGVjay5yaWdodCA9IGxvb3BbMjoocmVzb2x1dGlvbi0xKV0gLSBsb29wWzM6KHJlc29sdXRpb24pXQogICMgSWYgdGhlIHNpZ25zIGFyZSBkaWZmZXJlbnQsIHRoZW4gaXQgaXMgYSBsb2NhbCBzaGlmdAogIGxvb3AucG9zID0gYyhUUlVFLCAoc2lnbihsb29wLmNoZWNrLmxlZnQpID09IHNpZ24obG9vcC5jaGVjay5yaWdodCkpLCBUUlVFKQogIGZvcihwb3MgaW4gd2hpY2gobG9vcC5wb3MgPT0gRkFMU0UpKXsgIyBUYWtlIHRoZSBhdmVyYWdlCiAgICBsb29wW3Bvc10gPSAobG9vcFtwb3MtMV0gKyBsb29wW3BvcysxXSkvMgogIH0KICBFLmFub2RlJHBIID0gbG9vcDsgCiAgIyBMb29wIHBDTzIgY2FsY3VsYXRpb24gYXMgd2VsbCwgc2luY2UgdGhlIHBDTzIgZnVuY3Rpb24gcmVsaWVzIG9uIHRoZSBwcmV2aW91cyBwb2ludAogIGxvb3AgPSBwQ08yLnhBLnBILkEuay5iZXRhLk5hKHhBID0gRS5hbm9kZSR4QVsxXSwgcEggPSBFLmFub2RlJHBIWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEsIHBDTzIucHJldiA9IHN0YXJ0LnNvbG4kcC5DTzIpCiAgZm9yKGkgaW4gMjpsZW5ndGgoRS5hbm9kZSRESUMpKXsKICAgIGxvb3BbaV0gPSBwQ08yLnhBLnBILkEuay5iZXRhLk5hKHhBID0gRS5hbm9kZSR4QVtpXSwgcEggPSBFLmFub2RlJHBIW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSwgcENPMi5wcmV2ID0gbG9vcFtpLTFdKQogIH0KICBFLmFub2RlJHAuQ08yID0gbG9vcAogIEUuYW5vZGUkcSA9IGFicyhFLmFub2RlJHhBIC0gRS5hbm9kZSR4QVsxXSkqQS50b3QqeipGICMgQ291bG9tYnMKICAKICAjIDMgLT4gNDogRWxlY3Ryb2NoZW1pY2FsIHJlZHVjdGlvbiAoeEEgaW5jcmVhc2UgdG8gZW5kcG9pbnQpLCBjb25zdGFudCBESUMKICAjIFN0YXJ0aW5nIHNvbHV0aW9uIGZvciBpbml0aWFsIGd1ZXNzOiBoaWdoIFAsIGxvdyB4QQogIHN0b3Auc29sbiA9IGRhdGEuZnJhbWUocC5DTzIgPSBwQ08yLm91dCwgeEEgPSBtaW4oeEEubGltKSkKICBzdG9wLnNvbG4kcEggPSBwSC54QS5wQ08yLkEuay5iZXRhLk5hKHhBID0gc3RvcC5zb2xuJHhBLCBQID0gc3RvcC5zb2xuJHAuQ08yLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkKICBzdG9wLnNvbG4kRElDID0gRElDLnhBLnBDTzIucEguQS5rLmJldGEoeEEgPSBzdG9wLnNvbG4keEEsIHBDTzIgPSBzdG9wLnNvbG4kcC5DTzIsIHBIID0gc3RvcC5zb2xuJHBILCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRvdCA9IEEudG90LCBrMSA9IGsxLCBrMiA9IGsyLCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyKQogICMgQ2F0aG9kZSBwcm9ncmVzcwogIEUuY2F0aG9kZSA9IGRhdGEuZnJhbWUoRElDID0gc3RvcC5zb2xuJERJQ1sxXSwgeEEgPSBzZXEoZnJvbSA9IHN0b3Auc29sbiR4QVsxXSwgdG8gPSBtYXgoeEEubGltKSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pKQogICMgTG9vcCB0byBzb2x2ZSB0aGUgaWVyYXRpb24gZnVuY3Rpb24KICBsb29wID0gcEguaXQuZ3Vlc3MuRElDLkF0LmsuYmV0YShwSC5ndWVzcyA9IHN0b3Auc29sbiRwSFsxXSwgeEEubmV4dCA9IEUuY2F0aG9kZSR4QVsxXSwgRElDID0gRS5jYXRob2RlJERJQ1sxXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEudG90ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEpCiAgZm9yKGkgaW4gMjpsZW5ndGgoRS5jYXRob2RlJERJQykpewogICAgbG9vcCA9IGMobG9vcCwgcEguaXQuZ3Vlc3MuRElDLkF0LmsuYmV0YShwSC5ndWVzcyA9IGxvb3BbaS0xXSwgeEEubmV4dCA9IEUuY2F0aG9kZSR4QVtpXSwgRElDID0gRS5jYXRob2RlJERJQ1tpXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSkpCiAgfQogICMgU29tZSBpdGVyYXRpb25zIGRvbid0IGNvbnZlcmdlIGNvbXBsZXRlbHksIGxlYWRpbmcgdG8gc2luZ2xlIHBvaW50cyB0aGF0IGRldmlhdGVkIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGN1cnZlLiBUaGlzIGlzIGNoYXJhY3Rlcml6ZWQgYnkgYSBzaW5nbGUgcG9pbnQgdGhhdCBpcyBhIGxvY2FsIG1heGltYSBvciBtaW5pbXVtLiBFbmRwb2ludHMgYXJlIGFzdXNtZWQgdG8gYmUgZ29vZAogIGxvb3AuY2hlY2subGVmdCA9IGxvb3BbMToocmVzb2x1dGlvbi0yKV0gLSBsb29wWzI6KHJlc29sdXRpb24tMSldCiAgbG9vcC5jaGVjay5yaWdodCA9IGxvb3BbMjoocmVzb2x1dGlvbi0xKV0gLSBsb29wWzM6KHJlc29sdXRpb24pXQogICMgSWYgdGhlIHNpZ25zIGFyZSBkaWZmZXJlbnQsIHRoZW4gaXQgaXMgYSBsb2NhbCBzaGlmdAogIGxvb3AucG9zID0gYyhUUlVFLCAoc2lnbihsb29wLmNoZWNrLmxlZnQpID09IHNpZ24obG9vcC5jaGVjay5yaWdodCkpLCBUUlVFKQogIGZvcihwb3MgaW4gd2hpY2gobG9vcC5wb3MgPT0gRkFMU0UpKXsgIyBUYWtlIHRoZSBhdmVyYWdlCiAgICBsb29wW3Bvc10gPSAobG9vcFtwb3MtMV0gKyBsb29wW3BvcysxXSkvMgogIH0KICBFLmNhdGhvZGUkcEggPSBsb29wOwogICMgTG9vcCBwQ08yIGNhbGN1bGF0aW9uIGFzIHdlbGwsIHNpbmNlIHRoZSBwQ08yIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgcHJldmlvdXMgcG9pbnQKICBsb29wID0gcENPMi54QS5wSC5BLmsuYmV0YS5OYSh4QSA9IEUuY2F0aG9kZSR4QVsxXSwgcEggPSBFLmNhdGhvZGUkcEhbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXQgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgTmEgPSBOYSwgcENPMi5wcmV2ID0gc3RvcC5zb2xuJHAuQ08yKQogIGZvcihpIGluIDI6bGVuZ3RoKEUuY2F0aG9kZSRESUMpKXsKICAgIGxvb3BbaV0gPSBwQ08yLnhBLnBILkEuay5iZXRhLk5hKHhBID0gRS5jYXRob2RlJHhBW2ldLCBwSCA9IEUuY2F0aG9kZSRwSFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0ID0gQS50b3QsIGsxID0gazEsIGsyID0gazIsIGJldGExID0gYmV0YTEsIGJldGEyID0gYmV0YTIsIE5hID0gTmEsIHBDTzIucHJldiA9IGxvb3BbaS0xXSkKICB9CiAgRS5jYXRob2RlJHAuQ08yID0gbG9vcAogIEUuY2F0aG9kZSRxID0gYWJzKEUuY2F0aG9kZSR4QSAtIEUuY2F0aG9kZSR4QVsxXSkqQS50b3QqeipGICMgQ291bG9tYnMKICAKICAjIEVxdWlsaWJyaXVtIHBvdGVudGlhbDogRGV2aWF0aW9uIGZyb20gc3RhbmRhcmQgcmVkdWN0aW9uIHBvdGVudGlhbAogIEUuYW5vZGUkSCA9IDEwXi1FLmFub2RlJHBICiAgRS5hbm9kZSRFID0gUipULyh6KkYpICogbG9nKCAoMSAtIEUuYW5vZGUkeEEpL0UuYW5vZGUkeEEgKiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDEgKyBiZXRhMSpFLmFub2RlJHAuQ08yICsgYmV0YTIqRS5hbm9kZSRwLkNPMl4yKSprMSprMiArIGsxKkUuYW5vZGUkSCArIEUuYW5vZGUkSF4yKS8oazEqazIpKQogIEUuY2F0aG9kZSRIID0gMTBeLUUuY2F0aG9kZSRwSAogIEUuY2F0aG9kZSRFID0gUipULyh6KkYpICogbG9nKCAoMSAtIEUuY2F0aG9kZSR4QSkvRS5jYXRob2RlJHhBICogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgxICsgYmV0YTEqRS5jYXRob2RlJHAuQ08yICsgYmV0YTIqRS5jYXRob2RlJHAuQ08yXjIpKmsxKmsyICsgazEqRS5jYXRob2RlJEggKyBFLmNhdGhvZGUkSF4yKS8oazEqazIpKQogIAogICMgVG90YWwgZW5lcmd5CiAgRS5jZWxsID0gZGF0YS5mcmFtZShxID0gRS5hbm9kZSRxLCBWID0gRS5hbm9kZSRFIC0gRS5jYXRob2RlJEUpCiAgIyBPbmx5IHRoZSBwb3NpdGl2ZSBlbmVyZ3kgZGVtYW5kCiAgRS5jZWxsID0gZmlsdGVyKEUuY2VsbCwgViA+IDApCiAgbGVuID0gbGVuZ3RoKEUuY2VsbCRxKQogIGlmKGxlbiA9PSAwKXsKICAgIEUuY2VsbCA9IGRhdGEuZnJhbWUocSA9IHJlcCh4ID0gMCwgdGltZXMgPSAxMCksIFYgPSByZXAoeCA9IDAsIHRpbWVzID0gMTApKQogICAgbGVuID0gMTAKICB9CiAgIyBFLmFub2RlJHR5cCA9ICJhbm9kZSI7IEUuY2F0aG9kZSR0eXAgPSAiY2F0aG9kZSIKICBFbmVyZ3kudG90LnNlcCA9IHN1bSgwLjUqKEUuY2VsbCRWWzI6bGVuXSArIEUuY2VsbCRWWzE6KGxlbi0xKV0pKihFLmNlbGwkcVsyOmxlbl0gLSBFLmNlbGwkcVsxOihsZW4tMSldKSkKICAKICAjIyBBZGp1c3QgdGhlIHRvdGFsIGVuZXJneSBieSBtdWx0aXBseWluZyBieSB0aGUgcGVuYWx0eSBmdW5jdGlvbgogICMgQ2FsY3VsYXRlIHRoZSBsZWFuIGdhcyBwcmVzc3VyZQogICMgazEsIGsyLCBiZXRhMSwgYmV0YTIsIEEudG90LCBOYSwgcENPMi5pbiwgcENPMi5vdXQKICBwLmxlYW4gPSBwQ08yLmxlYW4oTmEgPSBOYSwgQSA9IEEudG90LCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyLCBrMSA9IGsxLCBrMiA9IGsyLCBwQ08yLm91dCA9IHBDTzIub3V0KQogIHBlbmFsdHkgPSB3ZWlnaHQuZnVuKHBDTzIubGVhbiA9IHAubGVhbikKICAKICAjIE5vcm1hbGl6ZSBieSB0aGUgdG90YWwgYW1vdW50IG9mIGNhcmJvbiBtb3ZlZCwgaS5lLiB1bml0cyBvZiBrSi9tb2wKICBESUMuY2FwdHVyZSA9IERJQy5kaWZmKE5hID0gTmEsIEEgPSBBLnRvdCwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgazEgPSBrMSwgazIgPSBrMiwgcENPMi5pbiA9IHBDTzIuaW4sIHBDTzIub3V0ID0gcENPMi5vdXQpCiAgcmV0dXJuKEVuZXJneS50b3Quc2VwKnBlbmFsdHkvRElDLmNhcHR1cmUqMWUtMykKfQoKYGBgCgoKYGBge3IgUENFVCBEZXJpdmVkIEZ1bmN0aW9uczogQ08yIEZsdXh9CiMgVGhlc2UgZXF1YXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgZnJhbWV3b3JrIGZvciBkZXRlcm1pbmluZyB0aGUgQ08yIGZsdXggYXMgcHJlc2VudGVkIGluIFdpbGNveCAyMDEyLgpFbmhhbmNlLmZhY3RvciA9IGZ1bmN0aW9uKHBILCBwQ08yLmluLCBBLCBrMSwgazIsIGJldGExLCBiZXRhMiwgcENPMil7CiAgIyBDb25zdGFudHM6IGdlbmVyYWwKICBrdyA9IDFlLTE0ICMgTV4yCiAga0ggPSAzLjRlLTI7ICMgTS9hdG0KICB6ID0gMSAjIE9ILSArIENPMiA9IEhDTzMtCiAgIyBDb25zdGFudHM6IGZyb20gV2lsY294IDIwMTIKICBEY28yID0gMC41ZS01ICMgY20yL3MsIGFzc3VtZSBzbG93ZXN0IGR1ZSB0byBoaWdoIGlvbmljIHN0cmVuZ3RoCiAga0wgPSAwLjEgIyBBc3N1bWUgZmFzdCBtYXNzIHRyYW5zZmVyIG9mIHR5cGljYWwgcmFuZ2UKICAjIENvbnN0YW50czogYXZlcmFnZSBvZiBQb2NrZXIgMTk5NywgWmVtYW4gMjAwNywgU3RvbGFyb2ZmIDIwMDgsIFdpbGNveCAyMDEyCiAgay5yYXRlID0gKDYuMDNlMyArIDYuNzQ1ZTMgKyA4LjVlMyArIDEyLjFlMykvNAogICMgQ29uc3RhbnRzOiBMdm92MjAxMgogIERvaCA9IDUuMmUtNSAjIGNtMi9zCgogICMgQmFzZSBjb25jZW50cmF0aW9uID0gT0ggKyBIUS0gKyAyUS0tCiAgSCA9IDEwXi1wSAogIE9IID0ga3cvSAogIGJhc2UgPSBPSCArIEEqKDIqazEqazIgKyBIKmsxKSAvIChIXjIgKyBIKmsxICsgazEqazIqKDEgKyBiZXRhMSpwQ08yICsgYmV0YTIqcENPMl4yKSkKICAKICAjIEludGVyZmFjZSBDTzIgY29uY2VudHJhdGlvbiAtIGFzc3VtZSA5MCUgY2FwdHVyZSBmcm9tIHRoZSBpbmxldAogIENPMi5pbnQgPSAwLjEqcENPMi5pbiprSAogIAogICMgSGF0dGEgbnVtYmVyOiByZWFjdGlvbiByYXRlIC8gbWFzcyB0cmFuc2ZlciByYXRlCiAgSGEgPSBzcXJ0KERjbzIqYmFzZSprLnJhdGUpL2tMCiAgIyBJbnN0YW50YW5lb3VzIGVuaGFuY2VtZW50IGZhY3RvcgogIEVpID0gMSArIERvaCpiYXNlIC8gKHoqRGNvMipDTzIuaW50KQogIAogICMgcmV0dXJuKGMoRWksIEhhIC8gdGFuaChIYSksIEhhKSkKICAjIENoZWNrIHRoZSBleHRyZW1lIGNhc2VzIGZvciBFIHRvIHNpbXBsaWZ5IHRoZSBlcXVhdGlvbnMKICBpZihIYSA+IDEwKkVpKXsgIyBJbnN0YW50YW5lb3VzCiAgICBFID0gRWkKICB9IGVsc2UgaWYoSGEgPCBFaS8yKXsgIyBQc2V1ZG8tMXN0IG9yZGVyCiAgICBFID0gSGEgLyB0YW5oKEhhKQogIH0gZWxzZSBpZihIYSA+IDMpeyAjIDFzdCBvcmRlcgogICAgRSA9IEhhCiAgfSBlbHNleyAjIE5vIHNpbXBsaWZpY2F0aW9uIC0gU29sdmUgdGhlIHJvb3QgdGhhdCBpcyBsZXNzIHRoYW4gRWksIGFzIEVpIGlzIHRoZSB1cHBlciBib3VuZAogICAgeC5ndWVzcyA9IGMoMC45LCAwLjk1KSpFaQogICAgZm9yKGkgaW4gMTo1KXsgIyBOZXd0b24ncyBtZXRob2QKICAgICAgeS5ndWVzcyA9IChIYSooRWkgLSB4Lmd1ZXNzKSAvIChFaSAtIDEpKSAvIHRhbmgoSGEqKEVpIC0geC5ndWVzcykgLyAoRWkgLSAxKSkgLSB4Lmd1ZXNzCiAgICAgIHNscC5maXQgPSAoeS5ndWVzc1sxXSAtIHkuZ3Vlc3NbMl0pIC8gKHguZ3Vlc3NbMV0gLSB4Lmd1ZXNzWzJdKQogICAgICBFLmd1ZXNzID0gLXkuZ3Vlc3NbMV0vc2xwLmZpdCArIHguZ3Vlc3NbMV0KICAgICAgeC5ndWVzcyA9IGMoMC45NzUsIDEuMDI1KSpFLmd1ZXNzCiAgICB9CiAgICBFID0gRS5ndWVzcwogIH0KICAjIyMjIE5lZWQgdG8gaW5jbHVkZSBvcmRlciBvZiBtYWduaXR1ZGUgZm9yIHJlYWN0aW9uIHJhdGUgd2l0aCBzb3JiZW50IC0gdXNlIGFjaWQgYW5oeWRyaWRlIGZvcm1hdGlvbiByYXRlIGNvbnN0YW50cyBhcyBlc3RpbWF0ZXM/CiAgcmV0dXJuKEUpCn0KCiMgQ2FsY3VsYXRlIHRoZSBhdmVyYWdlIGtpbmV0aWMgZHJpdmluZyBmb3JjZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgYWJzb3JwdGlvbiAoc3RhZ2UgNCAtPiAxKQpraW5ldGljLmZvcmNlID0gZnVuY3Rpb24oazEsIGsyLCBiZXRhMSwgYmV0YTIsIEEudG90LCBOYSwgcENPMi5pbiwgcENPMi5vdXQpewogICMgQ29uc3RhbnRzCiAgeEEubGltID0gYygwLjAyNSwgMC45NzUpCiAga0ggPSAzLjRlLTI7ICMgTS9hdG0KICAjIENhbGN1bGF0ZSB0aGUgcENPMiBvZiB0aGUgZnVsbHkgcmVkdWNlZCBzcGVjaWVzIHByaW9yIHRvIGVxdWlsaWJyYXRpb24gd2l0aCB0aGUgZ2FzCiAgb3V0LnBDTzIgPSBwQ08yLmxlYW4oTmEgPSBOYSwgQSA9IEEudG90LCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyLCBrMSA9IGsxLCBrMiA9IGsyLCBwQ08yLm91dCA9IHBDTzIub3V0KQogICMgSWYgdGhlIG1pbmltdW0gb3V0bGV0IHBDTzIgaXMgZ3JlYXRlciB0aGFuIHRoZSB0YXJnZXQgY2FwdHVyZToKICAjIGlmKG91dC5wQ08yID4gMC4xKnBDTzIuaW4gfCBpcy5uYShvdXQucENPMikpewogIGlmKGlzLm5hKG91dC5wQ08yKSl7CiAgICByZXR1cm4oMCkKICB9IGVsc2V7CiAgICAjIENhbGN1bGF0ZSB0aGUgcEggYXQgdGhlIHN0YXJ0IG9mIGRlc29ycHRpb24KICAgIHNvbG40MSA9IGRhdGEuZnJhbWUoeEEgPSBtYXgoeEEubGltKSwgcC5DTzIgPSBvdXQucENPMikKICAgICMgU29sdmUgcEggd2l0aCBtdWx0aXBsZSBjb3JlcwogICAgc29sbjQxJHBIID0gcEgueEEucENPMi5BLmsuYmV0YS5OYSh4QSA9IHNvbG40MSR4QSwgUCA9IHNvbG40MSRwLkNPMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICBBdCA9IEEudG90LCBrMSA9IGsxLCBrMiA9IGsyLCBiZXRhMSA9IGJldGExLCBiZXRhMiA9IGJldGEyLCBOYSA9IE5hKQogICAgc29sbjQxJEUgPSBFbmhhbmNlLmZhY3RvcihwSCA9IHNvbG40MSRwSCwgcENPMi5pbiA9IHBDTzIuaW4sIEEgPSBBLnRvdCwgazEgPSBrMSwgazIgPSBrMiwgYmV0YTEgPSBiZXRhMSwgYmV0YTIgPSBiZXRhMiwgcENPMiA9IHNvbG40MSRwLkNPMikKCiAgICAjIENhbGN1bGF0ZSB0aGUgY29uY2VudHJhdGlvbiBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGludGVyZmFjZSBhbmQgdGhlIGJ1bGsuIEFzc3VtaW5nIDkwJSBjYXB0dXJlCiAgICBzb2xuNDEkZGVsQyA9ICgwLjEqcENPMi5pbiAtIG91dC5wQ08yKSprSAogICAgIyBGbHV4OiBkZWxDICoga0wgKiBFLCBhc3N1bWUga0wgPSAwLjAxIGNtL3MKICAgICMgVW5pdCBjb252ZXJzaW9uOiBMIHRvIGNtMywgY20yIHRvIG0yCiAgICBmbHV4ID0gc29sbjQxJGRlbEMqc29sbjQxJEUqMC4wMSAqICgxLzFlMykgKiAoMTAwXjIpCiAgICAjIHJldHVybihzb2xuNDEpCiAgICByZXR1cm4oc2lnbmlmKGZsdXgsIDUpKSAjIEhpZ2hlc3QgZHJpdmluZyBmb3JjZSBhdCBvdXRsZXQKICAgICMgcmV0dXJuKHNvbG40MSkKICB9Cn0KCmBgYAoKClRvIHdvcmsgd2l0aCBHUGFyZXRvLCB0aGUgdHdvIG9iamVjdGl2ZSBmdW5jdGlvbnMgbmVlZCB0byBjb21iaW5lZCwgYW5kIHRoZSBpbnB1dCBzaG91bGQgYmUgYSBtYXRyaXgsIG5vdCBhIGRhdGFmcmFtZS4gSSBhY2NvdW50IGZvciB0aGlzIHdpdGggYSB3cmFwcGVyIGZ1bmN0aW9uIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZXNzLgoKYGBge3J9ClBDRVQub2JqLmZsdSA9IGZ1bmN0aW9uKGlucHV0cyl7CiAgIyBJbnB1dHMgaXMgYSBtYXRyaXggd2hlcmUgZWFjaCByb3cgaXMgYW4gaW5zdGFuY2UgYW5kIGVhY2ggY29sdW1uIGlzIGEgc3BlY2lmaWMgdmFyaWFibGU6CiAgIyBGcm9tIGxlZnQgdG8gcmlnaHQsIHRoZSBjb2x1bW5zIGFyZToKICAjIHBrYTEsIGVyci5wa2EyLCBsb2cxMChBLnRvdCksIE5hL0EudG90CiAgIyBGb3IgdGhlIGZ1bmN0aW9ucywgdGhlIHZhcmlhYmxlcyBzaG91bGQgYmU6CiAgIyBrMSwgazIsIEEudG90LCBOYQogICMgVGhlIHVzZSBvZiBsb2cgdW5pdHMgYW5kIHJhdGlvcyBoZWxwcyBhbGxldmlhdGUgcmVzb2x1dGlvbiBpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHNwYW5uaW5nIG11bHRpcGxlIG9yZGVycyBvZiBtYWduaXR1ZGUKICAjIFRoZSB1c2Ugb2YgdGhlIGVycm9yIG9mIHBLYTIgcmVtb3ZlcyB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiB0aGUgdHdvIHZhcmlhYmxlcwogIAogICMgU3RvcmluZyB0aGUgcHJvcGVyIGluZm9ybWF0aW9uLgogIGlmKGlzLm1hdHJpeChpbnB1dHMpKXsKICAgIGRhdCA9IGRhdGEuZnJhbWUoazEgPSAxMF4taW5wdXRzWywxXSwKICAgICAgICAgICAgICAgICAgICAgazIgPSAxMF4tKGlucHV0c1ssMV0gKyBpbnB1dHNbLDJdKSwKICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSAxMF5pbnB1dHNbLDNdLAogICAgICAgICAgICAgICAgICAgICBOYSA9IDEwXmlucHV0c1ssNF0qMTBeaW5wdXRzWywzXSkKICB9IGVsc2V7CiAgICAjIFRoZSBvcHRpbWl6YXRpb24gZnVuY3Rpb24gc29tZXRpbWVzIHN0b3JlcyBhcyBhIHZlY3RvciBpbnN0ZWFkIG9mIGFzIGEgbWF0cml4IGlmIGl0IGlzIGp1c3QgYSBzaW5nbGUgcG9pbnQKICAgIGRhdCA9IGRhdGEuZnJhbWUoazEgPSAxMF4taW5wdXRzWzFdLAogICAgICAgICAgICAgICAgICAgICBrMiA9IDEwXi0oaW5wdXRzWzFdICsgaW5wdXRzWzJdKSwKICAgICAgICAgICAgICAgICAgICAgQS50b3QgPSAxMF5pbnB1dHNbM10sCiAgICAgICAgICAgICAgICAgICAgIE5hID0gMTBeaW5wdXRzWzRdKjEwXmlucHV0c1szXSkKICB9CiAgIyBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFzc3VtZWQgZm9yIFBDRVQgZnJvbSBmbHVlIGdhcwogIGJldGExID0gMDsgYmV0YTIgPSAwOwogIHBDTzIuaW4gPSAwLjE1OyBwQ08yLm91dCA9IDE7CiAgCiAgIyBUaGUgZnVuY3Rpb25zIHJlcXVpcmUgc3Vic3RhbnRpYWwgY29tcHV0YXRpb24sIHNvIGVhY2ggcm93IGhhcyB0byBiZSBwcm9jZXNzZWQgaW5kZXBlbmRlbnRseQogIGVuZXJneSA9IGMoKTsgZmx1eCA9IGMoKQogIGZvcihpIGluIDE6bnJvdyhkYXQpKXsKICAgIGVuZXJneVtpXSA9IEVuZXJneS50b3QoazEgPSBkYXQkazFbaV0sIGsyID0gZGF0JGsyW2ldLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0YTEgPSAwLCBiZXRhMiA9IDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRvdCA9IGRhdCRBLnRvdFtpXSwgTmEgPSBkYXQkTmFbaV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICBwQ08yLmluID0gMC4xNSwgcENPMi5vdXQgPSAxKQogICAgZmx1eFtpXSA9IGtpbmV0aWMuZm9yY2UoazEgPSBkYXQkazFbaV0sIGsyID0gZGF0JGsyW2ldLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldGExID0gMCwgYmV0YTIgPSAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEudG90ID0gZGF0JEEudG90W2ldLCBOYSA9IGRhdCROYVtpXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQ08yLmluID0gMC4xNSwgcENPMi5vdXQgPSAxKQogIH0KICAjIE9idGFpbiB0aGUgbmVnYXRpdmUgb2YgdGhlIGZsdXggc28gaXQgaXMgYSBtaW5pbWl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBvcHRpbWl6YXRpb24gc2VhcmNoCiAgcmV0dXJuKGMoZW5lcmd5LCAtZmx1eCkpIAp9CgpgYGAKCiMgUGFyZXRvIGZyb250aWVyIHNlYXJjaAoKVXNpbmcgdGhlIEdQYXJldG8gcGFja2FnZSwgdXNpbmcgR2F1c3NpYW4gUHJvY2Vzc2VzIHRvIGZpbmQgdGhlIFBhcmV0byBmcm9udGllci4gVGhlIGluaXRpYWwgc2FtcGxpbmcgZGVzaWduIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgY29uc3RyYWludHM6CgpwS2ExOiAyIHRvIDEzLjUKcEthMjogbGluZWFybHkgcmVsYXRlZCB0byBwS2ExIHdpdGggZXJyb3IgdGVybSBvbiAoMCwgKzUuNSkKQS50b3Q6IDEwIG1NIHRvIDMuMSBNICgtMiB0byAwLjUgaW4gbG9nMTAgdW5pdHMpCk5hOiAxMF4tNyB0byAxMF4wLjcgdGltZXMgdGhlIGNvbmNlbnRyYXRpb24gb2YgQS50b3QKCldoaWxlIHBLYTEgY2FuIGZlYXNpYmx5IGV4dGVuZCBkb3duIHRvIC04LjMsIHRoZSBwSCBvZiB0aGUgc3lzdGVtIGlzIG5vdCBnb2luZyB0byBleHRlbmQgYmVsb3cgYXBwcm94aW1hdGVseSAzIGFzIGEgbG93ZXN0IGVzdGltYXRlIGR1ZSB0byB0aGUgc3RyZW5ndGggb2YgY2FyYm9uaWMgYWNpZC4gQXMgYSByZXN1bHQsIHBLYSB2YWx1ZXMgYmVsb3cgMiBhcmUgZWZmZWN0aXZlbHkgaWRlbnRpY2FsLgpBLnRvdCByZXByZXNlbnRzIHRoZSB0b3RhbCBjb25jZW50cmF0aW9uIG9mIHF1aW5vbmUuIApOYSByZXByZXNlbnRzIHRoZSBjb25jZW50cmF0aW9uIG9mIE5hT0ggdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHN5c3RlbTsgYSBuZWdhdGl2ZSB2YWx1ZSBpbnN0ZWFkIHJlcHJlc2VudHMgSENsLgpTaW5jZSB0aGUgY2FwdHVyZSBwcm9jZXNzIHJlcXVpcmVzIGJhc2ljIGNvbmRpdGlvbnMsIG5lZ2F0aXZlIE5hIGNvbmRpdGlvbnMgKEhDbCBhZGRpdGlvbikgc2hvdWxkIGJlIGxlc3MgZXh0cmVtZSBpZiB0aGV5IGFyZSBwcmVzZW50IGF0IGFsbC4KSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBiYWNrZ3JvdW5kIGVsZWN0cm9seXRlIChOYUNsKSBpcyBhdCBleHRyZW1lIGV4Y2VzcyBhbmQgYWNjb3VudHMgZm9yIGFsbCB0cmFuc3BvcnQgYWNyb3NzIHRoZSBtZW1icmFuZS4KClRoZSBpbml0aWFsIGRlc2lnbiBmaW5kcyBhbGwgJ2Nvcm5lcnMnIG9mIHRoZSA0LWRpbWVuc2lvbmFsIGh5cGVyY3ViZSwgdGhlIGNlbnRlciBvZiBlYWNoIGZhY2UgKGV4dHJlbWUgb2YgMSwgbWlkcG9pbnRzIG9mIHRoZSByZXN0KSwgYW5kIDcqND0yOCByYW5kb20gcG9pbnRzLgoKYGBge3IgUGFyZXRvIFNlYXJjaCBJbml0aWFsIERlc2lnbn0KIyBJbml0aWFsIHJhbmdlcwpwa2ExLnJuZyA9IGMoMiwgMTMuNSkKcGthMi5ybmcgPSBjKDAsIDUuNSkKbG9nQS5ybmcgPSBjKC0yLCAwLjUpCk5hLkEucm5nID0gYygtNywgMC43KQoKIyBDb3JuZXJzID0gZXh0cmVtZSBwb2ludHMKY29ybmVycyA9IGV4cGFuZC5ncmlkKHBrYTEucm5nLCBwa2EyLnJuZywgbG9nQS5ybmcsIE5hLkEucm5nKQpjb3JuZXJzID0gY29ybmVyc1ssYygxOjQpXQpuYW1lcyhjb3JuZXJzKSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKQojIEZhY2VzID0gZXh0cmVtZSBvZiAxIHZhcmlhYmxlOyBtaWRwb2ludCBvZiB0aGUgcmVzdApmYWNlcyA9IGRhdGEuZnJhbWUocGthMSA9IGMocGthMS5ybmcsIHJlcChtZWFuKHBrYTEucm5nKSwgNikpLAogICAgICAgICAgICAgICAgICAgcGthMiA9IGMocmVwKG1lYW4ocGthMi5ybmcpLCAyKSwgcGthMi5ybmcsIHJlcChtZWFuKHBrYTIucm5nKSwgNCkpLAogICAgICAgICAgICAgICAgICAgbG9nQSA9IGMocmVwKG1lYW4obG9nQS5ybmcpLCA0KSwgbG9nQS5ybmcsIHJlcChtZWFuKGxvZ0Eucm5nKSwgMikpLAogICAgICAgICAgICAgICAgICAgTmEuQSA9IGMocmVwKG1lYW4oTmEuQS5ybmcpLCA2KSwgTmEuQS5ybmcpICkKIyBSYW5kb20gc2FtcGxlczogbnVtYmVyIG9mIHZhcmlhYmxlcyB0aW1lcyA3Cm5zYW1wID0gbGVuZ3RoKG5hbWVzKGNvcm5lcnMpKSo3CnNhbXBsZXMgPSBkYXRhLmZyYW1lKHBrYTEgPSBydW5pZihuID0gbnNhbXAsIG1pbiA9IG1pbihwa2ExLnJuZyksIG1heCA9IG1heChwa2ExLnJuZykpLAogICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IG5zYW1wLCBtaW4gPSBtaW4ocGthMi5ybmcpLCBtYXggPSBtYXgocGthMi5ybmcpKSwKICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJ1bmlmKG4gPSBuc2FtcCwgbWluID0gbWluKGxvZ0Eucm5nKSwgbWF4ID0gbWF4KGxvZ0Eucm5nKSksCiAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gbnNhbXAsIG1pbiA9IG1pbihOYS5BLnJuZyksIG1heCA9IG1heChOYS5BLnJuZykpICkKCmRlc2lnbi5zdGFydCA9IHJiaW5kKGZhY2VzLCBjb3JuZXJzLCBzYW1wbGVzKQojIGZvcihpIGluIDE6bnJvdyhkZXNpZ24uc3RhcnQpKXsKIyAgIFBDRVQub2JqLmZsdShpbnB1dHMgPSBhcy5tYXRyaXgoZGVzaWduLnN0YXJ0W2ksXSkpCiMgfQojIE91dHB1dCBhcyBhIGxpc3QKcmVzdWx0LnN0YXJ0ID0gUENFVC5vYmouZmx1KGlucHV0cyA9IGFzLm1hdHJpeChkZXNpZ24uc3RhcnQpKQpyZXN1bHQuc3RhcnQgPSBtYXRyaXgocmVzdWx0LnN0YXJ0LCBuY29sID0gMikKUGFyZXRvLmJ1ZGdldCA9IDEwMApybShjb3JuZXJzLCBzYW1wbGVzLCBmYWNlcykKCiMgU3RvcmUgdGhlIGluaXRpYWwgZGVzaWduCmRlc2lnbi5zdGFydCRFbmVyZ3kua0oubW9sID0gcmVzdWx0LnN0YXJ0WywxXQpkZXNpZ24uc3RhcnQkRmx1eC5tb2wubTJzID0gcmVzdWx0LnN0YXJ0WywyXQp3cml0ZS5jc3YoZGVzaWduLnN0YXJ0LCBmaWxlID0gJ1BDRVRfU3RhcnREZXNpZ24uY3N2JykKCmBgYAoKYGBge3IgUGFyZXRvIFNlYXJjaDogR1BhcmV0b30KIyBMb2FkIGRlc2lnbgpkZXNpZ24uc3RhcnQgPSByZWFkLmNzdihmaWxlID0gJ1BDRVRfU3RhcnREZXNpZ24uY3N2JykKcmVzdWx0LnN0YXJ0ID0gZGVzaWduLnN0YXJ0WyxjKCdFbmVyZ3kua0oubW9sJywgJ0ZsdXgubW9sLm0ycycpXQpkZXNpZ24uc3RhcnQgPSBkZXNpZ24uc3RhcnRbLGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKV0KUGFyZXRvLmJ1ZGdldCA9IDEwMAoKcmVzID0gZWFzeUdQYXJldG9wdGltKGZuID0gUENFVC5vYmouZmx1LCBidWRnZXQgPSBQYXJldG8uYnVkZ2V0LCAKICAgICAgICAgICAgICAgICAgICAgIGxvd2VyID0gYygyLCAwLCAtMiwgLTcpLCB1cHBlciA9IGMoMTMuNSwgNS41LCAwLjUsIDAuNyksIAogICAgICAgICAgICAgICAgICAgICAgcGFyID0gYXMubWF0cml4KGRlc2lnbi5zdGFydCksIHZhbHVlID0gYXMubWF0cml4KHJlc3VsdC5zdGFydCksIG5jb3JlcyA9IDIpCnBsb3RHUGFyZXRvKHJlcykKCiMgRm9ybWF0IGludG8gZGF0YWZyYW1lIGZvciBlYXNpZXIgcGxvdHRpbmcKR1Bhci5mcm9udCA9IGRhdGEuZnJhbWUocGthMSA9IHJlcyRwYXJbLDFdLCBwa2EyID0gcmVzJHBhclssMl0sIGxvZ0EgPSByZXMkcGFyWywzXSwgTmEuQSA9IHJlcyRwYXJbLDRdLAogICAgICAgICAgICAgICAgICAgICAgICBFbmVyZ3kua0oubW9sID0gcmVzJHZhbHVlWywxXSwgRmx1eC5tb2wubTJzID0gLXJlcyR2YWx1ZVssMl0pCkdQYXIuYWxsID0gIGRhdGEuZnJhbWUocGthMSA9IHJlcyRoaXN0b3J5JFhbLDFdLCBwa2EyID0gcmVzJGhpc3RvcnkkWFssMl0sIGxvZ0EgPSByZXMkaGlzdG9yeSRYWywzXSwgCiAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHJlcyRoaXN0b3J5JFhbLDRdLCAKICAgICAgICAgICAgICAgICAgICAgICBFbmVyZ3kua0oubW9sID0gcmVzJGhpc3RvcnkkeVssMV0sIEZsdXgubW9sLm0ycyA9IC1yZXMkaGlzdG9yeSR5WywyXSkKR1Bhci5hbGwkb3JkZXIgPSBjKHJlcCgwLCBucm93KGRlc2lnbi5zdGFydCkpLCBzZXEoZnJvbSA9IDEsIHRvID0gUGFyZXRvLmJ1ZGdldCwgYnkgPSAxKSkKIyBybShyZXMpCndyaXRlLmNzdihHUGFyLmFsbCwgZmlsZSA9ICdHUGFyX2FsbF9kYXRhLmNzdicpCndyaXRlLmNzdihHUGFyLmZyb250LCBmaWxlID0gJ0dQYXJfZm50X2RhdGEuY3N2JykKYGBgCgpgYGB7ciBWaXN1YWxpemUgdGhlIFBhcmV0byBGcm9udH0KIyBybShyZXMpCkdQYXIuYWxsID0gcmVhZC5jc3YoZmlsZSA9ICdHUGFyX2FsbF9kYXRhLmNzdicpCkdQYXIuZnJvbnQgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfZm50X2RhdGEuY3N2JykKZ2dwbG90KCkgKwogIGdlb21fcG9pbnQoZmlsdGVyKEdQYXIuYWxsLCBhYnMoRmx1eC5tb2wubTJzKSA8IDAuMSwgRW5lcmd5LmtKLm1vbCA8IDE1MCksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh5ID0gRW5lcmd5LmtKLm1vbCwgeCA9IEZsdXgubW9sLm0ycykpICsKICBnZW9tX2xpbmUoZmlsdGVyKEdQYXIuZnJvbnQsIGFicyhGbHV4Lm1vbC5tMnMpIDwgMSwgRW5lcmd5LmtKLm1vbCA8IDE1MCksIAogICAgICAgICAgICBtYXBwaW5nID0gYWVzKHkgPSBFbmVyZ3kua0oubW9sLCB4ID0gRmx1eC5tb2wubTJzKSwgY29sb3IgPSAnY3lhbicpICsKICBnZW9tX3BvaW50KGZpbHRlcihHUGFyLmZyb250LCBhYnMoRmx1eC5tb2wubTJzKSA8IDEsIEVuZXJneS5rSi5tb2wgPCAxNTApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IEVuZXJneS5rSi5tb2wsIHggPSBGbHV4Lm1vbC5tMnMpLCBjb2xvciA9ICdjeWFuJykgKwogIGxhYnMoeCA9ICdDTzIgRmx1eCAobW9sL21eMi9zKScsIHkgPSAnRW5lcmd5IERlbWFuZCAoa0ovbW9sKScsIHN1YnRpdGxlID0gJ1BhcmV0byBGcm9udGllcicpCgpnZ3Bsb3QoKSArCiAgZ2VvbV9wb2ludChmaWx0ZXIoR1Bhci5hbGwsIEZsdXgubW9sLm0ycyA+IDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IEVuZXJneS5rSi5tb2wsIHggPSBGbHV4Lm1vbC5tMnMpKSArCiAgZ2VvbV9saW5lKGZpbHRlcihHUGFyLmZyb250LCBGbHV4Lm1vbC5tMnMgPiAwKSwgCiAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IEVuZXJneS5rSi5tb2wsIHggPSBGbHV4Lm1vbC5tMnMpLCBjb2xvciA9ICdjeWFuJykgKwogIGdlb21fcG9pbnQoZmlsdGVyKEdQYXIuZnJvbnQsIEZsdXgubW9sLm0ycyA+IDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IEVuZXJneS5rSi5tb2wsIHggPSBGbHV4Lm1vbC5tMnMpLCBjb2xvciA9ICdjeWFuJykgKwogIGxhYnMoeCA9ICdDTzIgRmx1eCAobW9sL21eMi9zKScsIHkgPSAnRW5lcmd5IERlbWFuZCAoa0ovbW9sKScsIHN1YnRpdGxlID0gJ1BhcmV0byBGcm9udGllcicpCgpgYGAKCiMgUmVxdWlyZW1lbnRzIGZvciBDTzIgY2FwdHVyZQoKQSBzdWJzdGFudGlhbCBmcmFjdGlvbiBvZiBwb2ludHMgd2VyZSBub3QgYWJsZSB0byBzYXRpc2Z5IHRoZSA5MCUgY2FwdHVyZSBjb25zdHJhaW50LCBhcyBub3RlZCBieSB0aGVpciBuZWdhdGl2ZSBDTzIgZmx1eC4gClRoZSBmaXJzdCBzdGVwIGlzIHRvIHNlZSBpZiB0aGUgc2l6ZSBvZiB0aGUgc2VhcmNoIHNwYWNlIGNhbiBiZSByZWR1Y2VkIGZvciBmdXR1cmUgb3B0aW1pemF0aW9uIHRvIG9ubHkgdGhlIDkwJSBjYXB0dXJlIGNvbmRpdGlvbnMuClRoaXMgd2lsbCBiZSBkb25lIGJ5IG1ha2luZyBhIEdQIG1vZGVsIG9mIHRoZSBraW5ldGljIHJhdGUsIHNhbXBsaW5nIHBvaW50cyB3aXRoIGEga2luZXRpYyByYXRlIG9mIDAgKHNpZ25pZnlpbmcgOTAlIGNhcHR1cmUpLCB0aGVuIG1hcmdpbmFsaXphdGluZyB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgcmVzdWx0IGhhcyBwb3NpdGl2ZSBmbHV4LgoKVGhlIEdQIG1vZGVsIHNvbWV0aW1lcyBkb2VzIG5vdCBjb252ZXJnZSBiZWNhdXNlIGl0IGlzIG9wdGltaXplZCB1c2luZyBhIGdlbmV0aWMgYWxnb3JpdGhtLiAKVGhpcyBsZWFkcyB0byBhIG1vZGVsIHRoYXQgaXMgdW5yZXByZXNlbnRhdGl2ZS4gVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCB0aGUgcmVzdWx0aW5nIG1vZGVsIGhhcyBhZGVxdWF0ZSB2YXJpYW5jZSB2YXJpYWJpbGl0eSBhbmQgb3V0cHV0cyBvbmx5IG1vZGVscyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIHRoZSB0cmFpbmluZyBkYXRhLgoKYGBge3IgOTAlIENhcHR1cmUgUmVmaW5lbWVudCBGdW5jdGlvbnN9CmZpbGwuc2FtcGxlLm1vZCA9IGZ1bmN0aW9uKEdQYXIuZGF0YSwgaW5wdXQubmFtZSwgb3V0cHV0Lm5hbWUpewogICMgQ2FsY3VsYXRlIHRoZSBHUCBtb2RlbCB0byB1c2UuIAogICMgVXNpbmcgdGhlIGttIGZ1bmN0aW9uLCBidXQgYXBwbGllcyBjaGVja3Mgb24gdGhlIHN5c3RlbSB0byBtYWtlIHN1cmUgdGhhdCAKICAjIHRoZSBtb2RlbCB1bmNlcnRhaW50eSBtYXRjaGVzIGV4cGVjdGF0aW9ucyBiYXNlZCBvbiBHUCwgaWUuIGl0IGRpZCBub3QKICAjIGZhaWwgdG8gY29udmVyZ2UuCiAgCiAgIyBCYXNlZCBvbiB0ZXN0aW5nLCB0aGUgbW9kZWwgaXMgYmFkIHdoZW4gdGhlIDEwJSBwZXJjZW50aWxlIGFuZCA5MCUgcGVyY2VudGlsZSAKICAjIG9mIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gYXJlIG9mIHRoZSBzYW1lIG9yZGVyIG9mIG1hZ25pdHVkZS4gVGhpcyBpcyBlYXNpZXN0CiAgIyBjaGVja2VkIGlmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIDEwdGggYW5kIDkwdGggcGVyY2VudGlsZQogICMgaXMgbGFyZ2VyIHRoYW4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgMjV0aCBhbmQgNzV0aC4KICBwdDEwID0gMTsgcHQ5MCA9IDE7IHB0MjUgPSAxOyBwdDc1ID0gMQogIHdoaWxlKGxvZzEwKHB0OTAvcHQxMCkgPD0gbG9nMTAocHQ3NS9wdDI1KSl7CiAgICBtb2Qub3V0ID0ga20oZGVzaWduID0gR1Bhci5kYXRhWywgaW5wdXQubmFtZV0sIHJlc3BvbnNlID0gR1Bhci5kYXRhWywgb3V0cHV0Lm5hbWVdLCAKICAgICAgICAgICAgICAgICBjb3Z0eXAgPSAnZ2F1c3MnLCAjIEdhdXNzaWFuIHVuY2VydGFpbnR5CiAgICAgICAgICAgICAgICAgb3B0aW0ubWV0aG9kID0gJ2dlbicsICMgR2VuZXRpYyBhbGdvcml0aG0gb3B0aW1pemF0aW9uCiAgICAgICAgICAgICAgICAgY29udHJvbCA9IGxpc3QodHJhY2UgPSBGQUxTRSwgIyBUdXJuIG9mZiB0cmFja2luZyB0byBzaW1wbGlmeSBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Auc2l6ZSA9IDUwKSwgIyBJbmNyZWFzZSByb2J1c3RuZXNzCiAgICAgICAgICAgICAgICAgbnVnZ2V0ID0gMWUtNiwgIyBBdm9pZCBlaWdlbnZhbHVlcyBvZiAwCiAgICAgICAgICAgICAgICAgKQogICAgCiAgICAjIFJhbmRvbWx5IHNhbXBsZSAxMDAwIHBvaW50cyBmcm9tIHRoZSBzZWFyY2ggc3BhY2UuCiAgICBwdCA9IDEwMDA7IGkgPSAxCiAgICBsaW1zID0gcmFuZ2UoR1Bhci5kYXRhWyxpbnB1dC5uYW1lW2ldXSkKICAgIHNhbXAgPSBkYXRhLmZyYW1lKHJ1bmlmKG4gPSBwdCwgbWluID0gbGltc1sxXSwgbWF4ID0gbGltc1syXSkpCiAgICBmb3IoaSBpbiAyOmxlbmd0aChpbnB1dC5uYW1lKSl7CiAgICAgIGxpbXMgPSByYW5nZShHUGFyLmRhdGFbLGlucHV0Lm5hbWVbaV1dKQogICAgICBzYW1wWyxpXSA9IHJ1bmlmKG4gPSBwdCwgbWluID0gbGltc1sxXSwgbWF4ID0gbGltc1syXSkKICAgIH0KICAgIG5hbWVzKHNhbXApID0gaW5wdXQubmFtZQogICAgCiAgICAjIEZpbmQgbW9kZWwgb3V0cHV0IHRvIGZpbmQgdGhlIHBlcmNlbnRpbGUgcmFua3MgZm9yIHRoaXMgaXRlcmF0aW9uCiAgICByZXMgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5vdXQsIG5ld2RhdGEgPSBzYW1wLCB0eXBlID0gJ1VLJykKICAgIHB0MTAgPSBxdWFudGlsZShyZXMkc2QsIDAuMTApOyBwdDkwID0gcXVhbnRpbGUocmVzJHNkLCAwLjkwKQogICAgcHQyNSA9IHF1YW50aWxlKHJlcyRzZCwgMC4yNSk7IHB0NzUgPSBxdWFudGlsZShyZXMkc2QsIDAuNzUpCiAgfQogIHJldHVybihtb2Qub3V0KQp9CgpmaWxsLnNhbXBsZS5vYmoubmVjID0gZnVuY3Rpb24oeCwgbW9kZWwuZmx1eCl7CiAgIyBFdmFsdWF0ZSB0aGUgS3JpZ2luZyBtb2RlbCBmdW5jdGlvbiBhdCB4IAogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2RlbC5mbHV4LCAKICAgICAgICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGRhdGEuZnJhbWUocGthMSA9IHhbMV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0geFsyXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSB4WzNdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHhbNF0pLCB0eXBlID0gJ1VLJykKCiAgIyBQcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gZml0cyBhIEdhdXNzaWFuIGRpc3RyaWJ1dGlvbgogIHByb2IgPSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4sIHNkID0gcmVzLmZsdXgkc2QpCiAgCiAgIyBWYXJpYW5jZSBiYXNlZCBvbiBwcm9wYWdhdGlvbiBvZiBlcnJvcnMsIGFzc3VtaW5nIGluZGVwZW5kZW50IG1lYXN1cmVzCiAgc2QgPSByZXMuZmx1eCRzZAoKICAjIE9iamVjdGl2ZSByZXN1bHQKICByZXR1cm4oc2QqKHByb2IqKDEtcHJvYikgKyAwLjI1LzkpKQp9CgojIE5leHQgcG9pbnQgc2VhcmNoIGZ1bmN0aW9uCmZpbGwuc2FtcGxlLm5lYyA9IGZ1bmN0aW9uKEdQYXIuZGF0YSl7CiAgIyBNb2RlbAogIG1vZC5mbHV4ID0gZmlsbC5zYW1wbGUubW9kKEdQYXIuZGF0YSA9IEdQYXIuZGF0YSwgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRmx1eC5tb2wubTJzJykKICAKICAjIE5leHQgcG9pbnQgYnkgZ2VuZXRpYyBhbGdvcml0aG0KICBHQS5wcmVkID0gZ2EodHlwZSA9ICdyZWFsLXZhbHVlZCcsCiAgICAgICAgICAgICAgIGZpdG5lc3MgPSBmdW5jdGlvbih4KXtmaWxsLnNhbXBsZS5vYmoubmVjKHgsIG1vZGVsID0gbW9kLmZsdXgpfSwKICAgICAgICAgICAgICAgbG93ZXIgPSBjKDIsIDAsIC0yLCAtNyksIHVwcGVyID0gYygxMy41LCA1LjUsIDAuNSwgMC43KSwKICAgICAgICAgICAgICAgcG9wU2l6ZSA9IDUwLCBtYXhpdGVyID0gNTAsIHJ1biA9IDEwLCBtb25pdG9yID0gRkFMU0UsCiAgICAgICAgICAgICAgIHBhcmFsbGVsID0gMikKICBwb2ludC5uZXh0ID0gR0EucHJlZEBzb2x1dGlvblsxLF0KICBHUGFyLm5ldyA9IGRhdGEuZnJhbWUocGthMSA9IHBvaW50Lm5leHRbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBwb2ludC5uZXh0WzJdLAogICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcG9pbnQubmV4dFszXSwKICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHBvaW50Lm5leHRbNF0pCiAgCiAgIyBUcnVlIHJlc3VsdCBmb3IgYm90aCB0aGUgZW5lcmd5IGFuZCBraW5ldGljcyB0byBhZGQgdGhpcyB0byB0aGUgZGF0YXNldAogIHJlcyA9IFBDRVQub2JqLmZsdShpbnB1dHMgPSBwb2ludC5uZXh0KQogIEdQYXIubmV3JEVuZXJneS5rSi5tb2wgPSByZXNbMV0KICBHUGFyLm5ldyRGbHV4Lm1vbC5tMnMgID0gLXJlc1syXSAjIEZsaXAgc2lnbiBiZWNhdXNlIG9wdGltaXphdGlvbiBmdW5jdGlvbiBtaW5pbWl6ZXMKICBHUGFyLm5ldyRvcmRlciA9IG1heChHUGFyLmRhdGEkb3JkZXIpICsgMQoKICAjIEFsc28gYWRkIHRoZSBmaXRuZXNzIHRvIHRoZSBkYXRhZnJhbWUgZm9yIGl0ZXJhdGlvbiBjdXRvZmZzCiAgR1Bhci5uZXckZml0ID0gbWF4KEdBLnByZWRAZml0bmVzcykKICAKICAjIFJldHVybiB0aGUgbmV3IHBvaW50IGFuZCB0aGUgZml0bmVzcwogIHJldHVybihHUGFyLm5ldykKfQoKYGBgCgpBcHBseWluZyB0aGUgZnVuY3Rpb25zIHdpdGggYSBsb29waW5nIGl0ZXJhdGl2ZSBzZWFyY2gKCmBgYHtyIDkwJSBDYXB0dXJlIFJlZmluZW1lbnQgSXRlcmF0aW9uc30KIyBMb2FkIGRhdGEKR1Bhci5hbGwgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfYWxsX2RhdGEuY3N2JykKIyBSZW1vdmUgaW5kaWNlcwpHUGFyLmFsbCA9IEdQYXIuYWxsWywgIShuYW1lcyhHUGFyLmFsbCkgJWluJSBjKCJYIikpXQoKIyBGaXJzdCBpdGVyYXRpb24gdG8gc2V0IHRoZSBiYXNlbGluZSBvZiBob3cgbXVjaCBpbXByb3ZlbWVudCB0aGVyZSBpcyB0byBmaW5kLgpuZXdwb2ludCA9IGZpbGwuc2FtcGxlLm5lYyhHUGFyLmRhdGEgPSBHUGFyLmFsbCkKc3RhcnQuZml0ID0gbmV3cG9pbnQkZml0OyAKY3VycmVudC5maXQgPSBuZXdwb2ludCRmaXQ7IAoKIyBSZXBlYXQgZm9yIGEgbWF4aW11bSBvZiAyMDAgaXRlcmF0aW9ucywgb3IgdW50aWwgdGhlIGZpdG5lc3MgZHJvcHMgYmVsb3cgMS8xMDAwIG9mIHRoZSBzdGFydGluZyBmaXRuZXNzLCAKIyBpbmRpY2F0aW5nIGxpdHRsZSBmdXJ0aGVyIGltcHJvdmVtZW50Cm1heC5pdGVyID0gbWF4KEdQYXIuYWxsJG9yZGVyKSArIDEwMAp3aGlsZShtYXgoR1Bhci5hbGwkb3JkZXIpIDwgbWF4Lml0ZXIgJiBjdXJyZW50LmZpdCoxZTMgPiBzdGFydC5maXQpewogIEdQYXIuYWxsID0gcmJpbmQoR1Bhci5hbGwsIG5ld3BvaW50WyxuYW1lcyhuZXdwb2ludCkgJWluJSBuYW1lcyhHUGFyLmFsbCldKQogIG5ld3BvaW50ID0gZmlsbC5zYW1wbGUubmVjKEdQYXIuZGF0YSA9IEdQYXIuYWxsKQogIGN1cnJlbnQuZml0ID0gbmV3cG9pbnQkZml0Cn0KCiMgU3RvcmUgdGhlIGRhdGEKd3JpdGUuY3N2KEdQYXIuYWxsLCBmaWxlID0gJ0dQYXJfOTBDYXBfZGF0YS5jc3YnKQoKCmBgYAoKYGBge3IgOTAlIENhcHR1cmUgUmVmaW5lbWVudCBJdGVyYXRpb24gVmlzdWFsaXphdGlvbn0KIyBQbG90IHRoZSByZXN1bHRzIHRvIHNob3cgcmVmaW5lbWVudApHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl85MENhcF9kYXRhLmNzdicpCmdncGxvdChmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDApKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBGbHV4Lm1vbC5tMnMsIHkgPSBFbmVyZ3kua0oubW9sLCBjb2xvciA9IChvcmRlciA+IDIwMCkpKSArCiAgZmFjZXRfd3JhcCh+KEZsdXgubW9sLm0ycyA+IDApLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIGxhYnMoeCA9ICdDTzIgZmx1eCBhdCA5MCUgY2FwdHVyZSAobW9sL21eMi9zKScsIHkgPSAnRW5lcmd5IGRlbWFuZCAoa0ovbW9sIEMpJykgKwogIHNjYWxlX2NvbG9yX21hbnVhbChsYWJlbHMgPSBjKCdJbml0aWFsJywgJ1JlZmluZW1lbnQnKSwgdmFsdWVzID0gYygncmVkJywgJ2JsdWUnKSwgbmFtZSA9ICcnKQoKIyBTaG93IG9uIGEgbG9nIHNjYWxlIChzZXBhcmF0aW5nIHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZmx1eGVzKSB0byBzZWUgaG93IGxvdyB0aGUgbWFnbml0dWRlIG9mIHRoZSBmbHV4IGNhbiBiZQpnZ3Bsb3QoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgMTAwKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gYWJzKEZsdXgubW9sLm0ycyksIHkgPSBFbmVyZ3kua0oubW9sLCBjb2xvciA9IChvcmRlciA+IDIwMCkpKSArCiAgZmFjZXRfd3JhcCh+KEZsdXgubW9sLm0ycyA+IDApLCBzY2FsZXMgPSAnZnJlZV94JykgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgbGFicyh4ID0gJ0NPMiBmbHV4IGF0IDkwJSBjYXB0dXJlIChtb2wvbV4yL3MpJywgeSA9ICdFbmVyZ3kgZGVtYW5kIChrSi9tb2wgQyknKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IGMoJ0luaXRpYWwnLCAnUmVmaW5lbWVudCcpLCB2YWx1ZXMgPSBjKCdyZWQnLCAnYmx1ZScpLCBuYW1lID0gJycpCgojIERpc3BsYXkgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBwb2ludHMgd2l0aCB2ZXJ5IGhpZ2ggZmx1eApnMSA9IGdncGxvdCgpICsKICBnZW9tX2RlbnNpdHkoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBGbHV4Lm1vbC5tMnMgPiAxZS00KSwgCiAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIGNvbG9yID0gJ2dvb2QnKSkgKwogIGdlb21fZGVuc2l0eShmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDAsIEZsdXgubW9sLm0ycyA8IDApLCAKICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcGthMSwgY29sb3IgPSAnYmFkJykpICsKICBsYWJzKHggPSAncEthMScsIHkgPSAnUHJvYmFiaWxpdHkgRGVuc2l0eScpICsgZ3VpZGVzKGNvbG9yID0gRkFMU0UpICsgCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ2dvb2QnID0gJ2JsdWUnLCAnYmFkJyA9ICdyZWQnKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygnZ29vZCcgPSAnSGlnaCBGbHV4JywgJ2JhZCcgPSAnTm8gQ2FwdHVyZScpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycsIGJyZWFrcyA9IGMoJ2dvb2QnLCAnYmFkJykpCmcyID0gZ2dwbG90KCkgKwogIGdlb21fZGVuc2l0eShmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDAsIEZsdXgubW9sLm0ycyA+IDFlLTQpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwa2ExICsgcGthMiwgY29sb3IgPSAnZ29vZCcpKSArCiAgZ2VvbV9kZW5zaXR5KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDEwMCwgRmx1eC5tb2wubTJzIDwgMCksIAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwa2ExICsgcGthMiwgY29sb3IgPSAnYmFkJykpICsKICBsYWJzKHggPSAncEthMicsIHkgPSAnUHJvYmFiaWxpdHkgRGVuc2l0eScpICsgZ3VpZGVzKGNvbG9yID0gRkFMU0UpICsgCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ2dvb2QnID0gJ2JsdWUnLCAnYmFkJyA9ICdyZWQnKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygnZ29vZCcgPSAnSGlnaCBGbHV4JywgJ2JhZCcgPSAnTm8gQ2FwdHVyZScpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycsIGJyZWFrcyA9IGMoJ2dvb2QnLCAnYmFkJykpCmczID0gZ2dwbG90KCkgKwogIGdlb21fZGVuc2l0eShmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDAsIEZsdXgubW9sLm0ycyA+IDFlLTQpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCBjb2xvciA9ICdnb29kJykpICsKICBnZW9tX2RlbnNpdHkoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBGbHV4Lm1vbC5tMnMgPCAwKSwgCiAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIGNvbG9yID0gJ2JhZCcpKSArCiAgbGFicyh4ID0gJ1tRdWlub25lXSAoTSknLCB5ID0gJ1Byb2JhYmlsaXR5IERlbnNpdHknKSArIGd1aWRlcyhjb2xvciA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ2dvb2QnID0gJ2JsdWUnLCAnYmFkJyA9ICdyZWQnKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygnZ29vZCcgPSAnSGlnaCBGbHV4JywgJ2JhZCcgPSAnTm8gQ2FwdHVyZScpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycsIGJyZWFrcyA9IGMoJ2dvb2QnLCAnYmFkJykpCmc0ID0gZ2dwbG90KCkgKwogIGdlb21fZGVuc2l0eShmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDAsIEZsdXgubW9sLm0ycyA+IDFlLTQpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBKjEwXk5hLkEsIGNvbG9yID0gJ2dvb2QnKSkgKwogIGdlb21fZGVuc2l0eShmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCAxMDAsIEZsdXgubW9sLm0ycyA8IDApLCAKICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSoxMF5OYS5BLCBjb2xvciA9ICdiYWQnKSkgKwogIGxhYnMoeCA9ICdBZGRpdGlvbmFsIEJhc2UgKE0pJywgeSA9ICdQcm9iYWJpbGl0eSBEZW5zaXR5JykgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ2dvb2QnID0gJ2JsdWUnLCAnYmFkJyA9ICdyZWQnKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygnZ29vZCcgPSAnSGlnaCBGbHV4JywgJ2JhZCcgPSAnTm8gQ2FwdHVyZScpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycsIGJyZWFrcyA9IGMoJ2dvb2QnLCAnYmFkJykpCihnMSArIGczKSAvIChnMiArIGc0KQoKcm0oZzEsIGcyLCBnMywgZzQpCmBgYAoKSW4gYWRkaXRpb24gdG8gcmVmaW5pbmcga25vd2xlZGdlIG9mIHRoZSBib3VuZGFyeSB3aGVyZSB0aGUgZmx1eCBpcyB6ZXJvICg5MCUgY2FwdHVyZSksIEkgc2hvdyB0aGUgZGlzdHJpYnV0aW9uIG9mICJnb29kIiBwb2ludHMgKGFib3ZlIDEwXi00IG1vbC9tMi9zIGZsdXgpIGFuZCAiYmFkIiBwb2ludHMgKG5vIGZsdXgpLgpUaGUgZGlzdGluY3QgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIHN1Z2dlc3RzIHRoYXQgaGlnaCBhbmQgbG93IGZsdXggY29uZGl0aW9ucyBhcmUgdmVyeSBkaXN0aW5jdCBpbiB0aGVpciBwS2EgYW5kIGNvbmNlbnRyYXRpb24gcHJvZmlsZXMsIGJ1dCB0aGUgYW1vdW50IG9mIGFjaWQgb3IgYmFzZSBpcyBub3QgYSBzdWJzdGFudGlhbCBmYWN0b3IuCgpBZnRlciBwZXJmb3JtaW5nIHRoZSBtYXJnaW5hbGl6YXRpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBzZWFyY2ggc3BhY2UgY2FuIGJlIGNvbnN0cmFpbmVkLCB0aGUgUGFyZXRvIGZyb250IHdpbGwgYmUgcmUtY2FsY3VsYXRlZCB3aXRoIHRoaXMgbmV3IGluZm9ybWF0aW9uLgoKQmFzZWQgb24gdGhlIGRpc3RyaWJ1dGlvbnMgb2YgdGhlIGhpZ2ggZmx1eCBjb25kaXRpb25zIGNvbXBhcmVkIHRvIHRoZSBubyBjYXB0dXJlIGNvbmRpdGlvbnMsIGl0IGlzIGxpa2VseSB0aGF0IHRoZSByZXN1bHQgZmFsbHMgbmVhciBhbiBvcHRpbXVtIHJhdGhlciB0aGFuIGFueSBvZiB0aGUgZXh0cmVtZXMgb2YgdGhlIHNhbXBsZSByZWdpb24uCgpGb3IgbWFyZ2luYWxpemF0aW9uLCBhc3N1bWUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gCldoaWxlIHRoaXMgaXMgdW5yZWFsaXN0aWMsIGl0IGlzIGp1c3QgdG8gZXN0YWJsaXNoIGEgY29uc3RyYWludCBvbiB0aGUgYm91bmRzIHJhdGhlciB0aGFuIHRvIGlkZW50aWZ5IHJlYWwgY29tcG91bmRzLgpBZGRpdGlvbmFsbHksIHRoZSBpbnRlcmVzdCBpcyBpbiByZW1vdmluZyB0aGUgY29uZGl0aW9ucyB0aGF0IGhhdmUgYSA8NSUgbGlrZWxpaG9vZCBvZiBjYXB0dXJpbmcgPjkwJSBDTzIsIHJlZ2FyZGxlc3Mgb2YgdGhlIG90aGVyIHZhcmlhYmxlcy4KCmBgYHtyIDkwJSBDYXB0dXJlIE1hcmdpbmFsaXphdGlvbn0KR1Bhci5hbGwgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfOTBDYXBfZGF0YS5jc3YnKQptb2QuZmx1eCA9IGZpbGwuc2FtcGxlLm1vZChHUGFyLmRhdGEgPSBHUGFyLmFsbCwgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRmx1eC5tb2wubTJzJykKCiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24KcmVzb2x1dGlvbiA9IDUwOyBNQ3NhbXAgPSAyMDAwCnBrYTEucm5nID0gYygyLCAxMy41KTsgcGthMi5ybmcgPSBjKDAsIDUuNSkKbG9nQS5ybmcgPSBjKC0yLCAwLjUpOyBOYS5BLnJuZyA9IGMoLTcsIDAuNykKIyBOb3RlOiBmb3IgdGhlIE5hL0EgcmF0aW8sIHRoZSBpbnRlcmVzdCBpcyBpbiB0aGUgb3JkZXIgb2YgbWFnbml0dWRlIHNoaWZ0cywgbm90IHRoZSBhYnNvbHV0ZSBzaGlmdHMsIGdvaW5nIGRvd24gdG8gMTBeLTcuCiMgU2luY2UgaXQgaXMgYmVpbmcgdGVzdGVkIGZvciBib3RoIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1dCB0aGV5IGFyZSBvZiBzaW1pbGFyIG9yZGVyIG9mIG1hZ25pdHVkZSwgaGFsZiB3aWxsIGJlIGRlZGljYXRlZCB0byBlYWNoIHNpZGUKCiMgU2V0IHRoZSByYW5nZXMKa2luLmNvbnN0cmFpbiA9IGRhdGEuZnJhbWUocGthMSA9IHNlcShmcm9tID0gcGthMS5ybmdbMV0sIHRvID0gcGthMS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHNlcShmcm9tID0gcGthMi5ybmdbMV0sIHRvID0gcGthMi5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHNlcShmcm9tID0gbG9nQS5ybmdbMV0sIHRvID0gbG9nQS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHNlcShmcm9tID0gTmEuQS5ybmdbMV0sIHRvID0gTmEuQS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wa2ExID0gTmFOLCBwLnBrYTIgPSBOYU4sIHAubG9nQSA9IE5hTiwgcC5OYS5BID0gTmFOLCAjIFByb2JhYmlsaXR5IGFjY2VwdGFuY2UgbWVkaWFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGwucGthMSA9IE5hTiwgbC5wa2EyID0gTmFOLCBsLmxvZ0EgPSBOYU4sIGwuTmEuQSA9IE5hTiwgIyBsb3dlciBib3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgICBoLnBrYTEgPSBOYU4sIGgucGthMiA9IE5hTiwgaC5sb2dBID0gTmFOLCBoLk5hLkEgPSBOYU4pICMgdXBwZXIgYm91bmQKbG93ZXIgPSAwLjI1OyB1cHBlciA9IDAuNzUKCmZvcihpIGluIDE6cmVzb2x1dGlvbil7CiAgIyBwa2ExCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMSA9IGtpbi5jb25zdHJhaW4kcGthMVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICByZXMgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9IHBub3JtKHEgPSAwLCBtZWFuID0gcmVzJG1lYW4gLSAxZS01LCBzZCA9IHJlcyRzZCkKICBraW4uY29uc3RyYWluJHAucGthMVtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBraW4uY29uc3RyYWluJGgucGthMVtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAga2luLmNvbnN0cmFpbiRsLnBrYTFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQoKICAjIHBrYTIKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2EyID0ga2luLmNvbnN0cmFpbiRwa2EyW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZ1sxXSwgbWF4ID0gcGthMS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBsb2dBLnJuZ1sxXSwgbWF4ID0gbG9nQS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIHJlcyA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMkbWVhbiAtIDFlLTUsIHNkID0gcmVzJHNkKQogIGtpbi5jb25zdHJhaW4kcC5wa2EyW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIGtpbi5jb25zdHJhaW4kaC5wa2EyW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBraW4uY29uc3RyYWluJGwucGthMltpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCgogICMgbG9nIFF1aW5vbmUKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShsb2dBID0ga2luLmNvbnN0cmFpbiRsb2dBW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZ1sxXSwgbWF4ID0gcGthMS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZ1sxXSwgbWF4ID0gcGthMi5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIHJlcyA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMkbWVhbiAtIDFlLTUsIHNkID0gcmVzJHNkKQogIGtpbi5jb25zdHJhaW4kcC5sb2dBW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIGtpbi5jb25zdHJhaW4kaC5sb2dBW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBraW4uY29uc3RyYWluJGwubG9nQVtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCiAgCiAgIyBOYS9BCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUoTmEuQSA9IGtpbi5jb25zdHJhaW4kTmEuQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmdbMV0sIG1heCA9IHBrYTEucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSkKICByZXMgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSAtIDFlLTUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcyRtZWFuLCBzZCA9IHJlcyRzZCkKICBraW4uY29uc3RyYWluJHAuTmEuQVtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBraW4uY29uc3RyYWluJGguTmEuQVtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAga2luLmNvbnN0cmFpbiRsLk5hLkFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQp9CgpgYGAKCmBgYHtyfQpraW4uY29uc3RyYWluCmcxID0gZ2dwbG90KGtpbi5jb25zdHJhaW4pICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHAucGthMSkpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IGgucGthMSksIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gbC5wa2ExKSwgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gJ3BLYTEnLCB5ID0gJ1Byb2JhYmlsaXR5IG9mID45MCUgQ2FwdHVyZScpCmcyID0gZ2dwbG90KGtpbi5jb25zdHJhaW4pICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMiwgeSA9IHAucGthMikpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMiwgeSA9IGgucGthMiksIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBwa2EyLCB5ID0gbC5wa2EyKSwgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gJ3BLYTIgLSBwS2ExJywgeSA9ICdQcm9iYWJpbGl0eSBvZiA+OTAlIENhcHR1cmUnKQpnMyA9IGdncGxvdChraW4uY29uc3RyYWluKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSBwLmxvZ0EpKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSBoLmxvZ0EpLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IGwubG9nQSksIGxpbmV0eXBlID0gMikgKwogIGxhYnMoeCA9ICdRdWlub25lIENvbmNlbnRyYXRpb24nLCB5ID0gJ1Byb2JhYmlsaXR5IG9mID45MCUgQ2FwdHVyZScpICsKICBzY2FsZV94X2xvZzEwKCkKZzQgPSBnZ3Bsb3Qoa2luLmNvbnN0cmFpbikgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gcC5OYS5BKSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gaC5OYS5BKSwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXk5hLkEsIHkgPSBsLk5hLkEpLCBsaW5ldHlwZSA9IDIpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIGxhYnMoeCA9ICdOYS9RdWlub25lIENvbmNlbnRyYXRpb24gUmF0aW8nLCB5ID0gJ1Byb2JhYmlsaXR5IG9mID45MCUgQ2FwdHVyZScpCgooZzEgKyBnMykgLyAoZzIgKyBnNCkKcm0oZzEsIGcyLCBnMywgZzQpCmBgYAoKRG90dGVkIGxpbmVzIHJlcHJlc2VudCB0aGUgYXN5bW1ldHJpYyA1MCUgY29uZmlkZW5jZSBpbnRlcnZhbCwgaS5lLiA1MCUgb2Ygb3V0Y29tZXMgd2hlcmUgdGhlIG90aGVyIHZhcmlhYmxlcyBhcmUgcmFuZG9tbHkgc2VsZWN0ZWQgd2lsbCBmYWxsIGJldHdlZW4gdGhvc2UgdHdvIGxpbmVzLgpOb25lIG9mIHRoZSBwYXJ0aWFsIGRlcGVuZGVuY2UgcHJvYmFiaWxpdHkgY3VydmVzIGluZGljYXRlIGFuIHVuYW1iaWd1b3VzIHJlZ2lvbiBvZiB0aGUgc2VhcmNoIHNwYWNlIHRoYXQgY2FuIGJlIG9taXR0ZWQsIGl0IGRvZXMgaW5kaWNhdGUgc29tZSBpbnRlcmVzdGluZyBmZWF0dXJlczoKCiogTG93ZXIgcEthMSB2YWx1ZXMgYXJlIG1vcmUgbGlrZWx5IHRvIGNhcHR1cmUgc3VmZmljaWVudCBjYXJib24sIGNvbnRyYXJ5IHRvIHRoZSBiZWxpZWYgdGhhdCBoaWdoIHBLYXMgKGJvdGgpIHdvdWxkIGJlIG1vc3QgZWZmaWNpZW50IGR1ZSB0byBhIGdyZWF0ZXIgZGlmZmVyZW5jZSBpbiBIKyB1cG9uIG94aWRhdGlvbiBvciByZWR1Y3Rpb24uCiogSGlnaGVyIGNvbmNlbnRyYXRpb25zIG9mIHF1aW5vbmUgaGF2ZSBoaWdoZXIgdmFyaWFuY2UsIGFuZCB0aHVzIGFyZSBtb3JlIGxpa2VseSB0byBiZSB1bmFtYmlndW91c2x5IHZpYWJsZSBvciBpbnZpYWJsZS4KKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcEthJ3MgZG9lcyBub3QgbWF0dGVyIHNpZ25pZmljYW50bHkuCgpXaGlsZSB0aGVzZSBjYW5ub3QgYmUgdXNlZCB0byByZW1vdmUgYXJlYXMgb2YgdGhlIHNlYXJjaCBzcGFjZSBmcm9tIHNhbXBsaW5nLCBpdCBkb2VzIGdpdmUgc29tZSBpbmRpY2F0aW9uIG9mIHdoYXQgdG8gY29uc2lkZXIgd2hlbiBjb21wYXJpbmcgb3B0aW9ucy4KCk9uZSBwb3NzaWJsZSBpbXByb3ZlbWVudCB0byB0aGlzIHByZXNlbnRhdGlvbiBpcyB0byBtYXJnaW5hbGl6ZSBhZ2FpbnN0IDIgdmFyaWFibGVzIGluc3RlYWQgb2YganVzdCAxLiAKSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGNvbWJpbmF0aW9uIG9mIGJvdGggcEthcyBvciBvZiBib3RoIGNvbmNlbnRyYXRpb25zIGlzIHdoYXQgbWF0dGVycywgYW5kIHRoaXMgbWF5IHByb3ZpZGUgbW9yZSBpbnNpZ2h0IGludG8gcmVzdHJpY3RpbmcgdGhlIHNwYWNlIGZ1cnRoZXIgc2luY2UgbWFueSBpbnB1dHMgYXJlIGNvLWNvcnJlbGF0ZWQuCgpgYGB7ciA5MCUgQ2FwdHVyZSAyRCBNYXJnaW5hbH0KR1Bhci5hbGwgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfOTBDYXBfZGF0YS5jc3YnKQptb2QuZmx1eCA9IGZpbGwuc2FtcGxlLm1vZChHUGFyLmRhdGEgPSBHUGFyLmFsbCwgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRmx1eC5tb2wubTJzJykKCiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24KcmVzb2x1dGlvbiA9IDM1OyBNQ3NhbXAgPSAxNTAwCnBrYTEucm5nID0gYygyLCAxMy41KTsgcGthMi5ybmcgPSBjKDAsIDUuNSkKbG9nQS5ybmcgPSBjKC0yLCAwLjUpOyBOYS5BLnJuZyA9IGMoLTcsIDAuNykKbG93ZXIgPSAwLjI1OyB1cHBlciA9IDAuNzUKCiMgU2V0IHVwIHRoZSBncmlkIHNlYXJjaApwa2FYLmdyaWQgPSBleHBhbmQuZ3JpZChzZXEoZnJvbSA9IHBrYTEucm5nWzFdLCB0byA9IHBrYTEucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcShmcm9tID0gcGthMi5ybmdbMV0sIHRvID0gcGthMi5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSkKcGthWC5ncmlkID0gcGthWC5ncmlkWyxjKDE6MildCm5hbWVzKHBrYVguZ3JpZCkgPSBjKCdwa2ExJywgJ3BrYTInKQpwa2FYLmdyaWQkcCA9IE5hTjsgcGthWC5ncmlkJGwgPSBOYU47IHBrYVguZ3JpZCRzID0gTmFOICMgUHJvYmFiaWxpdHkgYW5kIHRoZSBoaWdoIGFuZCBsb3cKCiMgTm90ZTogZm9yIHRoZSBOYS9BIHJhdGlvLCB0aGUgaW50ZXJlc3QgaXMgaW4gdGhlIG9yZGVyIG9mIG1hZ25pdHVkZSBzaGlmdHMsIG5vdCB0aGUgYWJzb2x1dGUgc2hpZnRzLCBnb2luZyBkb3duIHRvIDEwXi03LgojIFNpbmNlIGl0IGlzIGJlaW5nIHRlc3RlZCBmb3IgYm90aCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidXQgdGhleSBhcmUgb2Ygc2ltaWxhciBvcmRlciBvZiBtYWduaXR1ZGUsIGhhbGYgd2lsbCBiZSBkZWRpY2F0ZWQgdG8gZWFjaCBzaWRlCmNvbmMuZ3JpZCA9IGV4cGFuZC5ncmlkKHNlcShmcm9tID0gbG9nQS5ybmdbMV0sIHRvID0gbG9nQS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VxKGZyb20gPSBOYS5BLnJuZ1sxXSwgdG8gPSBOYS5BLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pKQpjb25jLmdyaWQgPSBjb25jLmdyaWRbLGMoMToyKV0KbmFtZXMoY29uYy5ncmlkKSA9IGMoJ2xvZ0EnLCAnTmEuQScpCmNvbmMuZ3JpZCRwID0gTmFOOyBjb25jLmdyaWQkbCA9IE5hTjsgY29uYy5ncmlkJHMgPSBOYU4gIyBQcm9iYWJpbGl0eSBhbmQgdGhlIGhpZ2ggYW5kIGxvdwoKIyBMb29wCmZvcihpIGluIDE6bnJvdyhwa2FYLmdyaWQpKXsKICAjIHBLYSBncmlkCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMSA9IHBrYVguZ3JpZCRwa2ExW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBwa2FYLmdyaWQkcGthMltpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICByZXMgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9IHBub3JtKHEgPSAwLCBtZWFuID0gcmVzJG1lYW4sIHNkID0gcmVzJHNkKQogIHBrYVguZ3JpZCRwW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHBrYVguZ3JpZCRoW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBwa2FYLmdyaWQkbFtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCiAgCiAgIyBDb25jZW50cmF0aW9uIGdyaWQKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmdbMV0sIG1heCA9IHBrYTEucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gY29uYy5ncmlkJGxvZ0FbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IGNvbmMuZ3JpZCROYS5BW2ldKQogIHJlcyA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMkbWVhbiwgc2QgPSByZXMkc2QpCiAgY29uYy5ncmlkJHBbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgY29uYy5ncmlkJGhbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IHVwcGVyKQogIGNvbmMuZ3JpZCRsW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSBsb3dlcikKfQoKYGBgCgpgYGB7cn0KIyBJbnB1dCB2YXJpYWJsZXM6IHBLYQpnMSA9IGdncGxvdChwa2FYLmdyaWQpICsKICBnZW9tX3RpbGUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTIsIGZpbGwgPSBwKSkgKwogIGxhYnMoeCA9ICdwa2ExJywgeSA9ICcnLCBmaWxsID0gJ1BbRmx1eCA+IDBdJywgc3VidGl0bGUgPSAnTWVhbicpICsKICBzY2FsZV9maWxsX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpICsKICBndWlkZXMoZmlsbCA9IEZBTFNFKQpnMiA9IGdncGxvdChwa2FYLmdyaWQpICsKICBnZW9tX3RpbGUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTIsIGZpbGwgPSBoKSkgKwogIGxhYnMoeCA9ICcnLCB5ID0gJycsIGZpbGwgPSAnUFtGbHV4ID4gMF0nLCBzdWJ0aXRsZSA9ICc3NXRoIFBlcmNlbnRpbGUnKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudDIobGltaXRzID0gYygwLCAxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgbG93PSJuYXZ5IiwgbWlkPSJ3aGl0ZSIsIGhpZ2g9InJlZCIsIG1pZHBvaW50ID0gMC41KQpnMyA9IGdncGxvdChwa2FYLmdyaWQpICsKICBnZW9tX3RpbGUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTIsIGZpbGwgPSBsKSkgKwogIGxhYnMoeCA9ICcnLCB5ID0gJ3BrYTIgLSBwa2ExJywgZmlsbCA9ICdQW0ZsdXggPiAwXScsIHN1YnRpdGxlID0gJzI1dGggUGVyY2VudGlsZScpICsKICBzY2FsZV9maWxsX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpICsKICBndWlkZXMoZmlsbCA9IEZBTFNFKQpnMyArIGcxICsgZzIKCiMgSW5wdXQgdmFyaWFibGVzOiBDb25jZW50cmF0aW9ucwpnMSA9IGdncGxvdChjb25jLmdyaWQpICsKICBnZW9tX3Jhc3RlcihtYXBwaW5nID0gYWVzKHggPSBsb2dBLCB5ID0gTmEuQSwgZmlsbCA9IHApKSArCiAgbGFicyh4ID0gJ2xvZzEwIFtRdWlub25lXScsIHkgPSAnJywgZmlsbCA9ICdQW0ZsdXggPiAwXScsIHN1YnRpdGxlID0gJ01lYW4nKSArCiAgc2NhbGVfeV9sb2cxMCgpICsgZ3VpZGVzKGZpbGwgPSBGQUxTRSkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKGxpbWl0cyA9IGMoMCwgMSksIAogICAgICAgICAgICAgICAgICAgICAgIGxvdz0ibmF2eSIsIG1pZD0id2hpdGUiLCBoaWdoPSJyZWQiLCBtaWRwb2ludCA9IDAuNSkKZzIgPSBnZ3Bsb3QoY29uYy5ncmlkKSArCiAgZ2VvbV9yYXN0ZXIobWFwcGluZyA9IGFlcyh4ID0gbG9nQSwgeSA9IE5hLkEsIGZpbGwgPSBsKSkgKwogIGxhYnMoeCA9ICcnLCB5ID0gJ2xvZyBbcEggQ29ycmVjdG9yXS9bUXVpbm9uZV0nLCBmaWxsID0gJ1BbRmx1eCA+IDBdJywgc3VidGl0bGUgPSAnMjV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX3lfbG9nMTAoKSArIGd1aWRlcyhmaWxsID0gRkFMU0UpICsKICBzY2FsZV9maWxsX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpCmczID0gZ2dwbG90KGNvbmMuZ3JpZCkgKwogIGdlb21fcmFzdGVyKG1hcHBpbmcgPSBhZXMoeCA9IGxvZ0EsIHkgPSBOYS5BLCBmaWxsID0gaCkpICsKICBsYWJzKHggPSAnJywgeSA9ICcnLCBmaWxsID0gJ1BbRmx1eCA+IDBdJywgc3VidGl0bGUgPSAnNzV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX3lfbG9nMTAoKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudDIobGltaXRzID0gYygwLCAxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgbG93PSJuYXZ5IiwgbWlkPSJ3aGl0ZSIsIGhpZ2g9InJlZCIsIG1pZHBvaW50ID0gMC41KQpnMiArIGcxICsgZzMKCiMgTmF0dXJhbCB2YXJpYWJsZXM6IHBrYQpnMSA9IGdncGxvdChwa2FYLmdyaWQpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiwgY29sb3IgPSBwKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IGMoMTAuMywgNi4zKSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IGMoMTAuMywgNi4zKSkgKwogIGxhYnMoeCA9ICdwa2ExJywgeSA9ICcnLCBjb2xvciA9ICdQW0ZsdXggPiAwXScsIHN1YnRpdGxlID0gJ01lYW4nKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxpbWl0cyA9IGMoMCwgMSksIAogICAgICAgICAgICAgICAgICAgICAgIGxvdz0ibmF2eSIsIG1pZD0id2hpdGUiLCBoaWdoPSJyZWQiLCBtaWRwb2ludCA9IDAuNSkgKwogIGd1aWRlcyhjb2xvciA9IEZBTFNFKQpnMiA9IGdncGxvdChwa2FYLmdyaWQpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiwgY29sb3IgPSBoKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IGMoMTAuMywgNi4zKSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IGMoMTAuMywgNi4zKSkgKwogIGxhYnMoeCA9ICcnLCB5ID0gJycsIGNvbG9yID0gJ1BbRmx1eCA+IDBdJywgc3VidGl0bGUgPSAnNzV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpCmczID0gZ2dwbG90KHBrYVguZ3JpZCkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTEgKyBwa2EyLCBjb2xvciA9IGwpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gYygxMC4zLCA2LjMpKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gYygxMC4zLCA2LjMpKSArCiAgbGFicyh4ID0gJycsIHkgPSAncGthMicsIGNvbG9yID0gJ1BbRmx1eCA+IDBdJywgc3VidGl0bGUgPSAnMjV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpICsKICBndWlkZXMoY29sb3IgPSBGQUxTRSkKZzMgKyBnMSArIGcyCgojIElucHV0IHZhcmlhYmxlczogQ29uY2VudHJhdGlvbnMKZzEgPSBnZ3Bsb3QoY29uYy5ncmlkKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBebG9nQSoxMF5OYS5BLCBjb2xvciA9IHApKSArCiAgbGFicyh4ID0gJ1tRdWlub25lXScsIHkgPSAnJywgY29sb3IgPSAnUFtGbHV4ID4gMF0nLCBzdWJ0aXRsZSA9ICdNZWFuJykgKwogIHNjYWxlX3lfbG9nMTAoKSArIHNjYWxlX3hfbG9nMTAoKSArIGd1aWRlcyhjb2xvciA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxpbWl0cyA9IGMoMCwgMSksIAogICAgICAgICAgICAgICAgICAgICAgIGxvdz0ibmF2eSIsIG1pZD0id2hpdGUiLCBoaWdoPSJyZWQiLCBtaWRwb2ludCA9IDAuNSkKZzIgPSBnZ3Bsb3QoY29uYy5ncmlkKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBebG9nQSoxMF5OYS5BLCBjb2xvciA9IGwpKSArCiAgbGFicyh4ID0gJycsIHkgPSAncEggQ29ycmVjdG9yJywgY29sb3IgPSAnUFtGbHV4ID4gMF0nLCBzdWJ0aXRsZSA9ICcyNXRoIFBlcmNlbnRpbGUnKSArCiAgc2NhbGVfeV9sb2cxMCgpICsgc2NhbGVfeF9sb2cxMCgpICsgZ3VpZGVzKGNvbG9yID0gRkFMU0UpICsKICBzY2FsZV9jb2xvcl9ncmFkaWVudDIobGltaXRzID0gYygwLCAxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgbG93PSJuYXZ5IiwgbWlkPSJ3aGl0ZSIsIGhpZ2g9InJlZCIsIG1pZHBvaW50ID0gMC41KQpnMyA9IGdncGxvdChjb25jLmdyaWQpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSAxMF5sb2dBKjEwXk5hLkEsIGNvbG9yID0gaCkpICsKICBsYWJzKHggPSAnJywgeSA9ICcnLCBjb2xvciA9ICdQW0ZsdXggPiAwXScsIHN1YnRpdGxlID0gJzc1dGggUGVyY2VudGlsZScpICsKICBzY2FsZV95X2xvZzEwKCkgKyBzY2FsZV94X2xvZzEwKCkgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50MihsaW1pdHMgPSBjKDAsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICBsb3c9Im5hdnkiLCBtaWQ9IndoaXRlIiwgaGlnaD0icmVkIiwgbWlkcG9pbnQgPSAwLjUpCmcyICsgZzEgKyBnMwoKcm0oZzEsIGcyLCBnMykKYGBgCgpXaGF0IGlzIGV2aWRlbnQgZnJvbSB0aGVzZSAyRCBwYXJ0aWFsIGNvbXBvbmVudCBwcm9iYWJpbGl0eSBwbG90cyBpcyB0aGF0IHRoZXJlIGFyZSByZWdpb25zIHdoZXJlIHRoZSBwcm9iYWJpbGl0eSBpcyB2ZXJ5IGxvdywgYnV0IHRoZXkgYXJlIG5vdCBjbGVhcmx5IGRlbGluZWF0ZWQgYnkgc2luZ2xlIHZhcmlhYmxlIGN1dG9mZnMuClRoZSBvbmx5IGNhc2Ugd2hlcmUgdGhlcmUgbWlnaHQgYmUgYSBjdXRvZmYgaXMgdGhlIGNvbmNlbnRyYXRpb24gb2YgcXVpbm9uZSwgd2hlcmUgbG93ICg8MC4xIE0pIGNvbmNlbnRyYXRpb25zIGxlYWQgdG8gZ2VuZXJhbGx5IGxvdyBwcm9iYWJpbGl0aWVzIG9mIGNhcHR1cmUuCgpJbnNpZ2h0cyBmcm9tIHRoZXNlIDJEIHBsb3RzOgoKKiBMb3dlciBwS2ExIHZhbHVlcyBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gbGVhZCB0byBiZXR0ZXIgb3V0Y29tZXMsIGJ1dCBhbHNvIHdvcnNlIG91dGNvbWVzLiBIaWdoIHBLYTEgdmFsdWVzIGFyZSBtb3JlIGNvbnNpc3RlbnQuCiogVGhlcmUgaXMgYSBkZWZpbml0aXZlIGJhbmQgb2YgcEthIGNvbWJpbmF0aW9ucyB0aGF0IGRvIG5vdCB5aWVsZCBnb29kIHJlc3VsdHMsIG1vc3RseSB3aGVuIHRoZSBsb3dlciBwS2ExIHZhbHVlIGlzIGFyb3VuZCBiZXR3ZWVuIHRoZSB0d28gYnVmZmVyIHJlZ2lvbnMgb2YgYmljYXJib25hdGUgYW5kIGNhcmJvbmljIGFjaWQgKGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGxpbmVzKS4KKiBHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBjb25jZW50cmF0aW9uIG9mIGFkZGl0aW9uYWwgYWNpZCBvciBiYXNlIGhhcyBuZXh0IHRvIG5vIGltcGFjdCBvbiB0aGUgZmx1eC4gVGhlcmUgaXMgYSBzbGlnaHQgdHJlbmQgdG93YXJkcyBsb3dlciBjb25jZW50cmF0aW9ucywgYnV0IGl0IGlzIGRpZmZpY3VsdCB0byB0ZWxsIGlmIHRoYXQgaXMgY2F1c2VkIGJ5IHRoZSBlZGdlIGVmZmVjdHMgKGxlc3Mgc2FtcGxpbmcpLgoqIFRoZXJlIGlzIGEgYmFuZCBvZiBxdWlub25lIGNvbmNlbnRyYXRpb25zIG9mIHRoZSBvcmRlciAwLjEgdG8gMSBNIHRoYXQgbW9yZSBvZnRlbiB0aGFuIG5vdCBsZWFkcyB0byBnb29kIG91dGNvbWVzLiBCZWxvdyB0aGF0IHJlZ2lvbiwgdGhlIHByb2JhYmlsaXR5IGlzIHR5cGljYWxseSBsb3csIHdoaWxlIGFib3ZlIHRoYXQgcmVnaW9uLCB0aGUgdmFyaWFuY2UgaXMgaGlnaC4KCiMgUmVmaW5lbWVudCB0byBvcHRpbWFsIGNvbmRpdGlvbnMKCkluIGFkZGl0aW9uIHRvIHJlZmluaW5nIHRoZSBtb2RlbCBjbG9zZSB0byAwIHRvIHNlcGFyYXRlIHRoZSBjb25kaXRpb25zIHRoYXQgYXJlIHZpYWJsZSBhbmQgaW52aWFibGUsIHRoZSBhYm92ZSBwcm9jZXNzIGZvdW5kIHNvbWUgcG9pbnRzIHRoYXQgd2VyZSBwcmV2aW91c2x5IHVuZXhwbG9yZWQgd2hpY2ggb3V0cGVyZm9ybWVkIHRoZSBQYXJldG8gZnJvbnQuClRoZXJlZm9yZSwgdGhlIFBhcmV0byBmcm9udCBuZWVkcyB0byBiZSB1cGRhdGVkLgoKYGBge3IgVXBkYXRlZCBQYXJldG8gRnJvbnR9CiMgTG9hZCBkYXRhCkdQYXIuYWxsID0gcmVhZC5jc3YoZmlsZSA9ICdHUGFyXzkwQ2FwX2RhdGEuY3N2JykKR1Bhci5mcm9udCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl9mbnRfZGF0YS5jc3YnKQojIENvbXBhcmUgdGhlIG1hdHJpY2VzIG9mIGp1c3QgdGhlIG91dHB1dHMgLSBuZWVkIGFzIGEgbWF0cml4CnRlc3QgPSBhcy5tYXRyaXgoR1Bhci5hbGxbR1Bhci5hbGwkRmx1eC5tb2wubTJzID4gMCxuYW1lcyhHUGFyLmFsbCkgJWluJSBjKCdFbmVyZ3kua0oubW9sJywgJ0ZsdXgubW9sLm0ycycpXSkKIyBGb3IgY29tcGFyaXNvbiwgbmVlZCBib3RoIHRvIG1pbmltaXplCnRlc3RbLDJdID0gLXRlc3RbLDJdCgpwYXIuZnJvbnQgPSB0KG5vbmRvbWluYXRlZF9wb2ludHMocG9pbnRzID0gdCh0ZXN0KSkpCnBhci5mcm9udFssMl0gPSAtcGFyLmZyb250WywyXQpnZ3Bsb3QoKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMC4xKm1heChHUGFyLmZyb250JEZsdXgubW9sLm0ycyksIGNvbG9yID0gJ2JsYWNrJywgbGluZXR5cGUgPSAzKSArCiAgZ2VvbV9wb2ludChmaWx0ZXIoR1Bhci5hbGwsIEZsdXgubW9sLm0ycyA+IDAsIEVuZXJneS5rSi5tb2wgPCAxMDApLAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCkpICsKICAjIE5ldyBmcm9udAogIGdlb21fbGluZShkYXRhLmZyYW1lKHBhci5mcm9udCksIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wsIGNvbG9yID0gJ25ldycpKSArCiAgZ2VvbV9wb2ludChkYXRhLmZyYW1lKHBhci5mcm9udCksIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wsIGNvbG9yID0gJ25ldycpKSArCiAgIyBPbGQgZnJvbnQKICBnZW9tX2xpbmUoR1Bhci5mcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCwgY29sb3IgPSAnb2xkJykpICsKICBnZW9tX3BvaW50KEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wsIGNvbG9yID0gJ29sZCcpKSArCiAgbGFicyh4ID0gJ0NPMiBmbHV4IChtb2wvbTIvcyknLCB5ID0gJ0VuZXJneSBEZW1hbmQgKGtKL21vbCBDKScpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygnbmV3JyA9ICdyZWQnLCAnb2xkJyA9ICdjeWFuJyksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCduZXcnID0gJ05ldyBGcm9udCcsICdvbGQnID0gJ09sZCBGcm9udCcpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycpCiAgCgojIElkZW50aWZ5IHRoZSBjb25kaXRpb25zIGxlYWRpbmcgdG8gdGhlIFBhcmV0byBmcm9udApHUGFyLmZyb250ID0gZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sICVpbiUgcGFyLmZyb250WywxXSwgRmx1eC5tb2wubTJzICVpbiUgcGFyLmZyb250WywyXSkKR1Bhci5mcm9udCA9IEdQYXIuZnJvbnRbLCFuYW1lcyhHUGFyLmZyb250KSAlaW4lICdYJ10Kd3JpdGUuY3N2KEdQYXIuZnJvbnQsIGZpbGUgPSAnR1Bhcl9mbnRfZGF0YV85MENhcC5jc3YnKQoKYGBgCgpUaGUgZW5lcmd5IHRhcmdldCBmb3IgQ08yIGNhcHR1cmUgZnJvbSBmbHVlIGdhcyBpcyBhcHByb3hpbWF0ZWx5IDI1LTMwIGtKZS9tb2wgQyB0byBhY2hpZXZlIGEgPCAzNSUgaW5jcmVhc2UgaW4gY29zdCByZWxhdGl2ZSB0byBhIHBvd2VyIHBsYW50IG5vdCBjYXB0dXJpbmcgY2FyYm9uLgpUaGUgbWFqb3JpdHkgb2YgdGhlIFBhcmV0byBmcm9udCBzYXRpc2ZpZXMgdGhpcyBjcml0ZXJpYSwgYW5kIHRoZSBwb2ludHMgdGhhdCBkbyBub3QgYXJlIHN0aWxsIHJlbGF0aXZlbHkgbG93ICh1cCB0byAzNyBrSmUvbW9sIEMpIGFuZCBjb21wZXRpdGl2ZSB3aXRoIHRlbXBlcmF0dXJlLXN3aW5nIGFic29ycHRpb24uClRoZSBlbnRpcmUgUGFyZXRvIGZyb250IGFsc28gZmFsbHMgZW50aXJlbHkgYWJvdmUgMTAlIG9mIHRoZSBtYXhpbXVtIGZsdXggKHZlcnRpY2FsIGRvdHRlZCBsaW5lKSwgc3VnZ2VzdGluZyB0aGF0IHRoZSBmbHV4IGRvZXMgbm90IGhhdmUgc3Vic3RhbnRpYWwgdmFyaWFiaWxpdHkuClRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgaXMgdGhlcmVmb3JlIGdvaW5nIHRvIGJlIGFsbCBwb2ludHMgdGhhdCBtZWV0IGJvdGggYW4gZW5lcmd5IGFuZCBmbHV4IGN1dG9mZiB0aHJlc2hvbGQgc2V0IGJ5IHRoZSAxLXZhcmlhYmxlIG9wdGltYS4KVG8gZ2l2ZSBzb21lIGFtb3VudCBvZiB0b2xlcmFuY2UsIHRoZSBmbHV4IGN1dG9mZiBpcyAxMCUgb2YgdGhlIG1heGltdW0gZmx1eCwgYW5kIHRoZSBlbmVyZ3kgY3V0b2ZmIGlzIDQwIGtKL21vbCBDLgoKQmFzZWQgb24gcHJpb3IgdGVzdHMgd2l0aCBtYXRoZW1hdGljYWwgdGVzdCBmdW5jdGlvbnMsIHRoaXMgdHlwZSBvZiBjcml0ZXJpYSBpcyBib3RoIHJvYnVzdCB0byBtb2RlbGluZyBhbmQgY29udmVyZ2VzIHJlbGF0aXZlbHkgcXVpY2tseS4KQW4gaW5pdGlhbCBwYXNzIG9uIHRoZSBpbnB1dHMgY29uZGl0aW9ucyB0aGF0IG1lZXQgdGhpcyBjcml0ZXJpYToKCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzIEJlZm9yZSBSZWZpbmVtZW50OiBGdW5jdGlvbnN9CiMgVGhlIGVuZXJneSBHUCBtb2RlbCBoYXMgZGlmZmljdWx0eSBjb252ZXJnaW5nIGR1ZSB0byBub256ZXJvIGVpZ2VudmFsdWVzCiMgVGhpcyBpcyBjb3JyZWN0ZWQgd2l0aCBhIGhpZ2hlciBudWdnZXQgKGVuZm9yY2VkIHNpbmdsZSB2YXJpYWJsZSB2YXJpYW5jZSkgdGVybQojIFNpbmNlIGVuZXJneSBhbmQgZmx1eCBoYXZlIGRpZmZlcmVudCBvcmRlcnMgb2YgbWFnbml0dWRlLCB0aGlzIHdpbGwgb25seSBiZSBlbmZvcmNlZCBmb3IgdGhlIGVuZXJneSBHUCBtb2RlbDsKIyB0aGUgZmx1eCB2YWx1ZXMgYXJlIHRvbyBzbWFsbCBjb21wYXJlZCB0byB0aGUgbmVjZXNzYXJ5IG51Z2dldAoKZmlsbC5zYW1wbGUuZW5lciA9IGZ1bmN0aW9uKEdQYXIuZGF0YSwgaW5wdXQubmFtZSwgb3V0cHV0Lm5hbWUpewogICMgQ2FsY3VsYXRlIHRoZSBHUCBtb2RlbCB0byB1c2UuIAogICMgVXNpbmcgdGhlIGttIGZ1bmN0aW9uLCBidXQgYXBwbGllcyBjaGVja3Mgb24gdGhlIHN5c3RlbSB0byBtYWtlIHN1cmUgdGhhdCAKICAjIHRoZSBtb2RlbCB1bmNlcnRhaW50eSBtYXRjaGVzIGV4cGVjdGF0aW9ucyBiYXNlZCBvbiBHUCwgaWUuIGl0IGRpZCBub3QKICAjIGZhaWwgdG8gY29udmVyZ2UuCiAgCiAgIyBCYXNlZCBvbiB0ZXN0aW5nLCB0aGUgbW9kZWwgaXMgYmFkIHdoZW4gdGhlIDEwJSBwZXJjZW50aWxlIGFuZCA5MCUgcGVyY2VudGlsZSAKICAjIG9mIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gYXJlIG9mIHRoZSBzYW1lIG9yZGVyIG9mIG1hZ25pdHVkZS4gVGhpcyBpcyBlYXNpZXN0CiAgIyBjaGVja2VkIGlmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIDEwdGggYW5kIDkwdGggcGVyY2VudGlsZQogICMgaXMgbGFyZ2VyIHRoYW4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgMjV0aCBhbmQgNzV0aC4KICBwdDEwID0gMTsgcHQ5MCA9IDE7IHB0MjUgPSAxOyBwdDc1ID0gMQogIHdoaWxlKGxvZzEwKHB0OTAvcHQxMCkgPD0gbG9nMTAocHQ3NS9wdDI1KSl7CiAgICBtb2Qub3V0ID0ga20oZGVzaWduID0gR1Bhci5kYXRhWywgaW5wdXQubmFtZV0sIHJlc3BvbnNlID0gbG9nMTAoR1Bhci5kYXRhWywgb3V0cHV0Lm5hbWVdKSwgCiAgICAgICAgICAgICAgICAgY292dHlwID0gJ2dhdXNzJywgIyBHYXVzc2lhbiB1bmNlcnRhaW50eQogICAgICAgICAgICAgICAgIG9wdGltLm1ldGhvZCA9ICdnZW4nLCAjIEdlbmV0aWMgYWxnb3JpdGhtIG9wdGltaXphdGlvbgogICAgICAgICAgICAgICAgIGNvbnRyb2wgPSBsaXN0KHRyYWNlID0gRkFMU0UpLCAjIFR1cm4gb2ZmIHRyYWNraW5nIHRvIHNpbXBsaWZ5IG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9wLnNpemUgPSA1MCksICMgSW5jcmVhc2Ugcm9idXN0bmVzcwogICAgICAgICAgICAgICAgIG51Z2dldCA9IDVlLTIsICMgQXZvaWQgZWlnZW52YWx1ZXMgb2YgMAogICAgICAgICAgICAgICAgICkKICAgIAogICAgIyBSYW5kb21seSBzYW1wbGUgMTAwMCBwb2ludHMgZnJvbSB0aGUgc2VhcmNoIHNwYWNlLgogICAgcHQgPSAxMDAwOyBpID0gMQogICAgbGltcyA9IHJhbmdlKEdQYXIuZGF0YVssaW5wdXQubmFtZVtpXV0pCiAgICBzYW1wID0gZGF0YS5mcmFtZShydW5pZihuID0gcHQsIG1pbiA9IGxpbXNbMV0sIG1heCA9IGxpbXNbMl0pKQogICAgZm9yKGkgaW4gMjpsZW5ndGgoaW5wdXQubmFtZSkpewogICAgICBsaW1zID0gcmFuZ2UoR1Bhci5kYXRhWyxpbnB1dC5uYW1lW2ldXSkKICAgICAgc2FtcFssaV0gPSBydW5pZihuID0gcHQsIG1pbiA9IGxpbXNbMV0sIG1heCA9IGxpbXNbMl0pCiAgICB9CiAgICBuYW1lcyhzYW1wKSA9IGlucHV0Lm5hbWUKICAgIAogICAgIyBGaW5kIG1vZGVsIG91dHB1dCB0byBmaW5kIHRoZSBwZXJjZW50aWxlIHJhbmtzIGZvciB0aGlzIGl0ZXJhdGlvbgogICAgcmVzID0gcHJlZGljdChvYmplY3QgPSBtb2Qub3V0LCBuZXdkYXRhID0gc2FtcCwgdHlwZSA9ICdVSycpCiAgICBwdDEwID0gcXVhbnRpbGUocmVzJHNkLCAwLjEwKTsgcHQ5MCA9IHF1YW50aWxlKHJlcyRzZCwgMC45MCkKICAgIHB0MjUgPSBxdWFudGlsZShyZXMkc2QsIDAuMjUpOyBwdDc1ID0gcXVhbnRpbGUocmVzJHNkLCAwLjc1KQogIH0KICByZXR1cm4obW9kLm91dCkKfQoKCmBgYAoKCmBgYHtyIE9wdGltYWwgQ2FwdHVyZSBNYXJnaW5hbHMgQmVmb3JlIFJlZmluZW1lbnQ6IDFEfQpHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl85MENhcF9kYXRhLmNzdicpCiMgRGVmaW5lIHRoZSBjdXRvZmYgdmFsdWVzCkUuY3V0b2YgPSBsb2cxMCg0MCk7ICNrSi9tb2wgQwpGLmN1dG9mID0gMC4xKm1heChHUGFyLmFsbCRGbHV4Lm1vbC5tMnMpCgojIE1hcmdpbmFsaXphdGlvbgptb2QuZmx1eCA9IGZpbGwuc2FtcGxlLm1vZChHUGFyLmRhdGEgPSBHUGFyLmFsbCwgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRmx1eC5tb2wubTJzJykKbW9kLmVuZXIgPSBmaWxsLnNhbXBsZS5lbmVyKEdQYXIuZGF0YSA9IEdQYXIuYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQubmFtZSA9ICdFbmVyZ3kua0oubW9sJykKCiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24KcmVzb2x1dGlvbiA9IDUwOyBNQ3NhbXAgPSAyMDAwCnBrYTEucm5nID0gYygyLCAxMy41KTsgcGthMi5ybmcgPSBjKDAsIDUuNSkKbG9nQS5ybmcgPSBjKC0yLCAwLjUpOyBOYS5BLnJuZyA9IGMoLTcsIDAuNykKCiMgU2V0IHRoZSByYW5nZXMKcHJlLm9wdGltID0gZGF0YS5mcmFtZShwa2ExID0gc2VxKGZyb20gPSBwa2ExLnJuZ1sxXSwgdG8gPSBwa2ExLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gc2VxKGZyb20gPSBwa2EyLnJuZ1sxXSwgdG8gPSBwa2EyLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gc2VxKGZyb20gPSBsb2dBLnJuZ1sxXSwgdG8gPSBsb2dBLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gc2VxKGZyb20gPSBOYS5BLnJuZ1sxXSwgdG8gPSBOYS5BLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBrYTEgPSBOYU4sIHAucGthMiA9IE5hTiwgcC5sb2dBID0gTmFOLCBwLk5hLkEgPSBOYU4sICMgUHJvYmFiaWxpdHkgYWNjZXB0YW5jZSBtZWRpYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5wa2ExID0gTmFOLCBsLnBrYTIgPSBOYU4sIGwubG9nQSA9IE5hTiwgbC5OYS5BID0gTmFOLCAjIGxvd2VyIGJvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGgucGthMSA9IE5hTiwgaC5wa2EyID0gTmFOLCBoLmxvZ0EgPSBOYU4sIGguTmEuQSA9IE5hTikgIyB1cHBlciBib3VuZApsb3dlciA9IDAuMjU7IHVwcGVyID0gMC43NQoKZm9yKGkgaW4gMTpyZXNvbHV0aW9uKXsKICAjIHBrYTEKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcHJlLm9wdGltJHBrYTFbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTIucm5nWzFdLCBtYXggPSBwa2EyLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IGxvZ0Eucm5nWzFdLCBtYXggPSBsb2dBLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IE5hLkEucm5nWzFdLCBtYXggPSBOYS5BLnJuZ1syXSkpCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5lbmVyLCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9ICgxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkpICoKICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgcHJlLm9wdGltJHAucGthMVtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwcmUub3B0aW0kaC5wa2ExW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBwcmUub3B0aW0kbC5wa2ExW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSBsb3dlcikKCiAgIyBwa2EyCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMiA9IHByZS5vcHRpbSRwa2ExW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZ1sxXSwgbWF4ID0gcGthMS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBsb2dBLnJuZ1sxXSwgbWF4ID0gbG9nQS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHByZS5vcHRpbSRwLnBrYTJbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgcHJlLm9wdGltJGgucGthMltpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAgcHJlLm9wdGltJGwucGthMltpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCiAgCiAgIyBsb2cgUXVpbm9uZQogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKGxvZ0EgPSBwcmUub3B0aW0kbG9nQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmdbMV0sIG1heCA9IHBrYTEucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICBwcmUub3B0aW0kcC5sb2dBW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHByZS5vcHRpbSRoLmxvZ0FbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IHVwcGVyKQogIHByZS5vcHRpbSRsLmxvZ0FbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQogIAogICMgTmEvQQogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKE5hLkEgPSBwcmUub3B0aW0kTmEuQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmdbMV0sIG1heCA9IHBrYTEucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSkKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICBwcmUub3B0aW0kcC5OYS5BW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHByZS5vcHRpbSRoLk5hLkFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IHVwcGVyKQogIHByZS5vcHRpbSRsLk5hLkFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQp9CgoKYGBgCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzIEJlZm9yZSBSZWZpbmVtZW50OiAxRCBQbG90c30KIyBGdW5jdGlvbiB2YXJpYWJsZXMKZzEgPSBnZ3Bsb3QocHJlLm9wdGltKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwLnBrYTEpKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBoLnBrYTEpLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IGwucGthMSksIGxpbmV0eXBlID0gMikgKwogIGxhYnMoeCA9ICdwa2ExJywgeSA9ICdQW09wdGltYWxdJykKZzIgPSBnZ3Bsb3QocHJlLm9wdGltKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IHBrYTIsIHkgPSBwLnBrYTIpKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IHBrYTIsIHkgPSBoLnBrYTIpLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMiwgeSA9IGwucGthMiksIGxpbmV0eXBlID0gMikgKwogIGxhYnMoeCA9ICdwa2EyIC0gcGthMScsIHkgPSAnUFtPcHRpbWFsXScpCihnMSAvIGcyKQoKZzMgPSBnZ3Bsb3QocHJlLm9wdGltKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSBwLmxvZ0EpKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSBoLmxvZ0EpLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IGwubG9nQSksIGxpbmV0eXBlID0gMikgKwogIGxhYnMoeCA9ICdbUXVpbm9uZV0nLCB5ID0gJ1BbT3B0aW1hbF0nKSArCiAgc2NhbGVfeF9sb2cxMCgpCmc0ID0gZ2dwbG90KHByZS5vcHRpbSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gcC5OYS5BKSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gaC5OYS5BKSwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXk5hLkEsIHkgPSBsLk5hLkEpLCBsaW5ldHlwZSA9IDIpICsKICBsYWJzKHggPSAnW3BIIENvcnJlY3RhbnRdIC8gW1F1aW5vbmVdJywgeSA9ICdQW09wdGltYWxdJykgKwogIHNjYWxlX3hfbG9nMTAoKQooZzMgLyBnNCkKCmBgYAoKKiBUaGUgcHJvYmFiaWxpdHkgb2YgYmVpbmcgb3B0aW1hbCBpcyBnZW5lcmFsbHkgdmVyeSBsb3cgYWNyb3NzIHRoZSBib2FyZCB3aGVuIG1hcmdpbmFsaXplZCBhZ2FpbnN0IDEgdmFyaWFibGUsIGluZGljYXRpbmcgdGhlIGltcG9ydGFuY2Ugb2YgY29tYmluYXRpb25zIG9mIHZhcmlhYmxlcy4KKiBUaGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBwcm9iYWJpbGl0aWVzIGlzIG5vdCBHYXVzc2lhbiwgYXMgaW5kaWNhdGVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIG1lYW4gdmFsdWUgaXMgc29tZXRpbWVzIGFib3ZlIHRoZSA3NXRoIHBlcmNlbnRpbGUgbGluZSBpbiB0aGUgcEthMSBwYXJ0aWFsIGRlcGVuZGVuY2UgcGxvdC4KKiBUaGUgdmFyaWFuY2UgaXMgaGlnaGVzdCB3aGVuIHRoZXJlIGlzIGEgc21hbGwgZGlmZmVyZW5jZSBpbiB0aGUgcEthcywgaW1wbHlpbmcgcEthMiBiZWNvbWVzIG1vcmUgaW1wb3J0YW50IG9ubHkgd2hlbiBpdCBpcyBzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIHBLYTEuCiogVGhlIGxvdyBwcm9iYWJpbGl0eSBhbmQgdmFyaWFuY2UgZm9yIGxvdyBxdWlub25lIGNvbmNlbnRyYXRpb25zIGlzIGV4cGVjdGVkOiBsb3cgcXVpbm9uZSBjb25jZW50cmF0aW9ucyBnZW5lcmFsbHkgaW5kaWNhdGUgbGVzcyBidWZmZXIgY2FwYWNpdHkgYW5kIHRoZXJlZm9yZSBsZXNzIGNhcHR1cmUuCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzIEJlZm9yZSBSZWZpbmVtZW50OiAyRH0KIyBTZXQgdXAgdGhlIG1hcmdpbmFsaXphdGlvbgpyZXNvbHV0aW9uID0gMzU7IE1Dc2FtcCA9IDE1MDAKcGthMS5ybmcgPSBjKDIsIDEzLjUpOyBwa2EyLnJuZyA9IGMoMCwgNS41KQpsb2dBLnJuZyA9IGMoLTIsIDAuNSk7IE5hLkEucm5nID0gYygtNywgMC43KQoKIyBTZXQgdXAgdGhlIGdyaWQgc2VhcmNoCnBrYVguZ3JpZCA9IGV4cGFuZC5ncmlkKHNlcShmcm9tID0gcGthMS5ybmdbMV0sIHRvID0gcGthMS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VxKGZyb20gPSBwa2EyLnJuZ1sxXSwgdG8gPSBwa2EyLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pKQpwa2FYLmdyaWQgPSBwa2FYLmdyaWRbLGMoMToyKV0KbmFtZXMocGthWC5ncmlkKSA9IGMoJ3BrYTEnLCAncGthMicpCnBrYVguZ3JpZCRwID0gTmFOOyBwa2FYLmdyaWQkbCA9IE5hTjsgcGthWC5ncmlkJHMgPSBOYU4gIyBQcm9iYWJpbGl0eSBhbmQgdGhlIGhpZ2ggYW5kIGxvdwoKIyBOb3RlOiBmb3IgdGhlIE5hL0EgcmF0aW8sIHRoZSBpbnRlcmVzdCBpcyBpbiB0aGUgb3JkZXIgb2YgbWFnbml0dWRlIHNoaWZ0cywgbm90IHRoZSBhYnNvbHV0ZSBzaGlmdHMsIGdvaW5nIGRvd24gdG8gMTBeLTcuCiMgU2luY2UgaXQgaXMgYmVpbmcgdGVzdGVkIGZvciBib3RoIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1dCB0aGV5IGFyZSBvZiBzaW1pbGFyIG9yZGVyIG9mIG1hZ25pdHVkZSwgaGFsZiB3aWxsIGJlIGRlZGljYXRlZCB0byBlYWNoIHNpZGUKY29uYy5ncmlkID0gZXhwYW5kLmdyaWQoc2VxKGZyb20gPSBsb2dBLnJuZ1sxXSwgdG8gPSBsb2dBLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBzZXEoZnJvbSA9IE5hLkEucm5nWzFdLCB0byA9IE5hLkEucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbikpCmNvbmMuZ3JpZCA9IGNvbmMuZ3JpZFssYygxOjIpXQpuYW1lcyhjb25jLmdyaWQpID0gYygnbG9nQScsICdOYS5BJykKY29uYy5ncmlkJHAgPSBOYU47IGNvbmMuZ3JpZCRsID0gTmFOOyBjb25jLmdyaWQkcyA9IE5hTiAjIFByb2JhYmlsaXR5IGFuZCB0aGUgaGlnaCBhbmQgbG93bG93ZXIgPSAwLjI1OyB1cHBlciA9IDAuNzUKCmZvcihpIGluIDE6bnJvdyhwa2FYLmdyaWQpKXsKICAjIHBrYTEKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcGthWC5ncmlkJHBrYTFbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHBrYVguZ3JpZCRwa2EyW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBsb2dBLnJuZ1sxXSwgbWF4ID0gbG9nQS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHBrYVguZ3JpZCRwW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHBrYVguZ3JpZCRoW2ldID0gcXVhbnRpbGUoZmlsdGVyKGZpbGwuZnJhbWUsICFpcy5uYW4ocC5hY2NlcHQpKSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBwa2FYLmdyaWQkbFtpXSA9IHF1YW50aWxlKGZpbHRlcihmaWxsLmZyYW1lLCAhaXMubmFuKHAuYWNjZXB0KSkkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCgogICMgcGthMgogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZ1sxXSwgbWF4ID0gcGthMi5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZ1sxXSwgbWF4ID0gcGthMS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBjb25jLmdyaWQkbG9nQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gY29uYy5ncmlkJE5hLkFbaV0pCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5lbmVyLCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9ICgxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkpICoKICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgY29uYy5ncmlkJHBbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgY29uYy5ncmlkJGhbaV0gPSBxdWFudGlsZShmaWx0ZXIoZmlsbC5mcmFtZSwgIWlzLm5hbihwLmFjY2VwdCkpJHAuYWNjZXB0LCBwcm9icyA9IHVwcGVyKQogIGNvbmMuZ3JpZCRsW2ldID0gcXVhbnRpbGUoZmlsdGVyKGZpbGwuZnJhbWUsICFpcy5uYW4ocC5hY2NlcHQpKSRwLmFjY2VwdCwgcHJvYnMgPSBsb3dlcikKfQoKCmBgYAoKCmBgYHtyIE9wdGltYWwgQ2FwdHVyZSBNYXJnaW5hbHMgQmVmb3JlIFJlZmluZW1lbnQ6IDJEIFBsb3RzfQpsaW0gPSBjKDAsIGNlaWxpbmcobWF4KHBrYVguZ3JpZCRoKSoxMCkvMTApOyBtaWQgPSBtZWFuKGxpbSkKIyBwS2EgcGxvdDogTmF0dXJhbCB2YXJpYWJsZXMKZzEgPSBnZ3Bsb3QoZmlsdGVyKHBrYVguZ3JpZCwgIWlzLm5hbihwKSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSBjKDYuMywgMTAuMykpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gYyg2LjMsIDEwLjMpKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gcGthMSArIHBrYTIsIGNvbG9yID0gbCkpICsKICBsYWJzKHggPSAncGthMScsIHkgPSAncGthMicsIGNvbG9yID0gJ1BbT3B0aW1hbF0nLCBzdWJ0aXRsZSA9ICcyNXRoIFBlcmNlbnRpbGUnKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAnZ3JleScpKSArCiAgZ3VpZGVzKGNvbG9yID0gRkFMU0UpCmcyID0gZ2dwbG90KGZpbHRlcihwa2FYLmdyaWQsICFpcy5uYW4ocCkpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gYyg2LjMsIDEwLjMpKSArIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IGMoNi4zLCAxMC4zKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTEgKyBwa2EyLCBjb2xvciA9IHApKSArCiAgbGFicyh4ID0gJ3BrYTEnLCB5ID0gJ3BrYTInLCBjb2xvciA9ICdQW09wdGltYWxdJywgc3VidGl0bGUgPSAnTWVhbicpICsKICBzY2FsZV9jb2xvcl9ncmFkaWVudDIobG93ID0gJ3B1cnBsZScsIGhpZ2ggPSAnb3JhbmdlJywgbWlkID0gJ3doaXRlJywgbWlkcG9pbnQgPSBtaWQsIGxpbWl0cyA9IGxpbSkgKwogIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICdncmV5JykpICsKICBndWlkZXMoY29sb3IgPSBGQUxTRSkKZzMgPSBnZ3Bsb3QoZmlsdGVyKHBrYVguZ3JpZCwgIWlzLm5hbihwKSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSBjKDYuMywgMTAuMykpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gYyg2LjMsIDEwLjMpKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gcGthMSArIHBrYTIsIGNvbG9yID0gaCkpICsKICBsYWJzKHggPSAncGthMScsIHkgPSAncGthMicsIGNvbG9yID0gJ1BbT3B0aW1hbF0nLCBzdWJ0aXRsZSA9ICc3NXRoIFBlcmNlbnRpbGUnKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAnZ3JleScpKQpnMSArIGcyICsgZzMKCiMgQ29uY2VudHJhdGlvbiBwbG90OiBOYXR1cmFsIHZhcmlhYmxlcwpsaW0gPSBjKDAsIGNlaWxpbmcobWF4KGNvbmMuZ3JpZCRoKSoxMCkvMTApOyBtaWQgPSBtZWFuKGxpbSkKZzEgPSBnZ3Bsb3QoZmlsdGVyKGNvbmMuZ3JpZCwgIWlzLm5hbihwKSkpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSAxMF5OYS5BKjEwXmxvZ0EsIGNvbG9yID0gbCkpICsKICBsYWJzKHggPSAnW1F1aW5vbmVdJywgeSA9ICdbcEggQ29ycmVjdGFudF0nLCBjb2xvciA9ICdQW09wdGltYWxdJywgc3VidGl0bGUgPSAnMjV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArIAogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAncHVycGxlJywgaGlnaCA9ICdvcmFuZ2UnLCBtaWQgPSAnd2hpdGUnLCBtaWRwb2ludCA9IG1pZCwgbGltaXRzID0gbGltKSArCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gJ2dyZXknKSkgKwogIGd1aWRlcyhjb2xvciA9IEZBTFNFKQpnMiA9IGdncGxvdChmaWx0ZXIoY29uYy5ncmlkLCAhaXMubmFuKHApKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IDEwXk5hLkEqMTBebG9nQSwgY29sb3IgPSBwKSkgKwogIGxhYnMoeCA9ICdbUXVpbm9uZV0nLCB5ID0gJ1twSCBDb3JyZWN0YW50XScsIGNvbG9yID0gJ1BbT3B0aW1hbF0nLCBzdWJ0aXRsZSA9ICdNZWFuJykgKwogIHNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArIAogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAncHVycGxlJywgaGlnaCA9ICdvcmFuZ2UnLCBtaWQgPSAnd2hpdGUnLCBtaWRwb2ludCA9IG1pZCwgbGltaXRzID0gbGltKSArCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gJ2dyZXknKSkgKwogIGd1aWRlcyhjb2xvciA9IEZBTFNFKQpnMyA9IGdncGxvdChmaWx0ZXIoY29uYy5ncmlkLCAhaXMubmFuKHApKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IDEwXk5hLkEqMTBebG9nQSwgY29sb3IgPSBoKSkgKwogIGxhYnMoeCA9ICdbUXVpbm9uZV0nLCB5ID0gJ1twSCBDb3JyZWN0YW50XScsIGNvbG9yID0gJ1BbT3B0aW1hbF0nLCBzdWJ0aXRsZSA9ICc3NXRoIFBlcmNlbnRpbGUnKSArCiAgc2NhbGVfeF9sb2cxMCgpICsgc2NhbGVfeV9sb2cxMCgpICsgCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAnZ3JleScpKQpnMSArIGcyICsgZzMKcm0oZzEsIGcyLCBnMykKYGBgCgoyRCBtYXJnaW5hbHMgc3VnZ2VzdCB0aGF0IHRoZSBwS2FzIGJldHdlZW4gdGhlIHR3byBjYXJib25hdGUgcEthcyAoNi4zIGFuZCAxMC4zKSBsZWFkIHRvIHRoZSBoaWdoZXN0IG1lYW4gcHJvYmFiaWxpdHkgb2YgYmVpbmcgb3B0aW1hbCwgYWx0aG91Z2ggdGhpcyByZWdpb24gaGFzIGEgdmVyeSBsYXJnZSB2YXJpYW5jZS4gVGhpcyBpcyBhbHNvIHRoZSByZWdpb24gd2hlcmUgaXQgaXMgbW9zdCBsaWtlbHkgdG8gbm90IHlpZWxkIGVub3VnaCBjYXB0dXJlLCBmb3IgaW5zdGFuY2UuCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzOiBSZWZpbmVtZW50IEZ1bmN0aW9uc30KZmlsbC5zYW1wbGUub2JqLm9wdCA9IGZ1bmN0aW9uKHgsIG1vZGVsLmZsdXgsIG1vZGVsLmVuZXIpewogICMgRXZhbHVhdGUgdGhlIEtyaWdpbmcgbW9kZWwgZnVuY3Rpb24gYXQgeCAKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kZWwuZmx1eCwgCiAgICAgICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBkYXRhLmZyYW1lKHBrYTEgPSB4WzFdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHhbMl0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0geFszXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSB4WzRdKSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZGVsLmVuZXIsIAogICAgICAgICAgICAgICAgICAgICBuZXdkYXRhID0gZGF0YS5mcmFtZShwa2ExID0geFsxXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSB4WzJdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHhbM10sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0geFs0XSksIHR5cGUgPSAnVUsnKQoKICAjIFByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBmaXRzIGEgR2F1c3NpYW4gZGlzdHJpYnV0aW9uLgogICMgV2FudCB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgZW5lcmd5IGlzIGJlbG93IDQwIGtKL21vbCBDLCAKICAjIGZsdXggaXMgZmFzdGVyIHRoYW4gMTAlIG9mIHRoZSBtYXhpbXVtICh3aGljaCBzdGlsbCBtZWV0cyB0aGUgZW5lcmd5IGNyaXRlcmlhKQogIEUuY3V0b2YgPSBsb2cxMCg0MCk7ICNrSi9tb2wgQywgbG9nIHNjYWxlIHRvIGFjY291bnQgZm9yIG11bHRpcGxlIG9yZGVyIG9mIG1hZ25pdHVkZSBzcGFuCiAgRi5jdXRvZiA9IDAuMSptYXgoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgNDApJEZsdXgubW9sLm0ycykKCiAgcHJvYiA9IGMoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpICoKICAgICAgICAgICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgICAgICAgICAgKQogIAogICMgVmFyaWFuY2UgYmFzZWQgb24gcHJvcGFnYXRpb24gb2YgZXJyb3JzLCBhc3N1bWluZyBpbmRlcGVuZGVudCBtZWFzdXJlcy4KICAjIFNpbmNlIHRoZSBvcHRpbWl6YXRpb24gbG9va3MgZm9yIHJlbGF0aXZlIGRpZmZlcmVuY2VzLCB0aGUgc3F1YXJlIHJvb3QgaXMgbm90IG5lY2Vzc2FyeQogIHNkID0gKHJlcy5mbHV4JHNkXjIgKiByZXMuZW5lciRtZWFuXjIgKyByZXMuZW5lciRzZF4yICogcmVzLmZsdXgkbWVhbl4yKQoKICAjIEFjcXVpc2l0aW9uIGZ1bmN0aW9uIHJlc3VsdC4gV2VpZ2h0IHRoZSBwcm9iYWJpbGl0eSBzbGlnaHRseSBzdWNoIHRoYXQgdGhlIG1heGltdW0gaXMgCiAgIyAyIG9yZGVycyBvZiBtYWduaXR1ZGUgaGlnaGVyIHRoYW4gdGhlIG1pbmltdW0gKGFuZCB0aGUgbWluaW11bSBpcyBub3QgemVybykKICAjIEdpdmVuIHRoZSBudW1iZXIgb2YgcG9pbnRzIGFscmVhZHkgY29sbGVjdGVkLCBmYXZvciBleHBsb2l0YXRpb24gb3ZlciBleHBsb3JhdGlvbi4KICByZXR1cm4oc2QqKHByb2IqKDEtcHJvYikgKyAwLjI1Lzk5KSkKfQoKIyBOZXh0IHBvaW50IHNlYXJjaCBmdW5jdGlvbgpmaWxsLnNhbXBsZS5vcHQgPSBmdW5jdGlvbihHUGFyLmRhdGEpewogICMgTW9kZWxzCiAgbW9kLmZsdXggPSBmaWxsLnNhbXBsZS5tb2QoR1Bhci5kYXRhID0gR1Bhci5kYXRhLCBpbnB1dC5uYW1lID0gYygncGthMScsICdwa2EyJywgJ2xvZ0EnLCAnTmEuQScpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQubmFtZSA9ICdGbHV4Lm1vbC5tMnMnKQogICMgRW5lcmd5IG1vZGVsIGhhcyBzdWJzdGFudGlhbCBvdXRsaWVycyBhYm92ZSAxZTMga0ovbW9sIHRoYXQgc2tldyB0aGUgbW9kZWw7IAogICMgYSBtb3JlIGFjY3VyYXRlIG1vZGVsIGlzIGZvdW5kIHdoZW4gcmVzdHJpY3RlZAogIG1vZC5lbmVyID0gZmlsbC5zYW1wbGUuZW5lcihHUGFyLmRhdGEgPSBHUGFyLmRhdGEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5uYW1lID0gYygncGthMScsICdwa2EyJywgJ2xvZ0EnLCAnTmEuQScpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRW5lcmd5LmtKLm1vbCcpCgogICMgTmV4dCBwb2ludCBieSBnZW5ldGljIGFsZ29yaXRobQogIEdBLnByZWQgPSBnYSh0eXBlID0gJ3JlYWwtdmFsdWVkJywKICAgICAgICAgICAgICAgZml0bmVzcyA9IGZ1bmN0aW9uKHgpe2ZpbGwuc2FtcGxlLm9iai5vcHQoeCwgbW9kZWwuZmx1eCA9IG1vZC5mbHV4LCBtb2RlbC5lbmVyID0gbW9kLmVuZXIpfSwKICAgICAgICAgICAgICAgbG93ZXIgPSBjKDIsIDAsIC0yLCAtNyksIHVwcGVyID0gYygxMy41LCA1LjUsIDAuNSwgMC43KSwKICAgICAgICAgICAgICAgcG9wU2l6ZSA9IDUwLCBtYXhpdGVyID0gNTAsIHJ1biA9IDEwLCBtb25pdG9yID0gRkFMU0UsCiAgICAgICAgICAgICAgIHBhcmFsbGVsID0gMikKICBwb2ludC5uZXh0ID0gR0EucHJlZEBzb2x1dGlvblsxLF0KICBHUGFyLm5ldyA9IGRhdGEuZnJhbWUocGthMSA9IHBvaW50Lm5leHRbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBwb2ludC5uZXh0WzJdLAogICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcG9pbnQubmV4dFszXSwKICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHBvaW50Lm5leHRbNF0pCiAgCiAgIyBUcnVlIHJlc3VsdCBmb3IgYm90aCB0aGUgZW5lcmd5IGFuZCBraW5ldGljcyB0byBhZGQgdGhpcyB0byB0aGUgZGF0YXNldAogIHJlcyA9IFBDRVQub2JqLmZsdShpbnB1dHMgPSBwb2ludC5uZXh0KQogIEdQYXIubmV3JEVuZXJneS5rSi5tb2wgPSByZXNbMV0KICBHUGFyLm5ldyRGbHV4Lm1vbC5tMnMgID0gLXJlc1syXSAjIEZsaXAgc2lnbiBiZWNhdXNlIG9wdGltaXphdGlvbiBmdW5jdGlvbiBtaW5pbWl6ZXMKICBHUGFyLm5ldyRvcmRlciA9IG1heChHUGFyLmRhdGEkb3JkZXIpICsgMQoKICAjIEFsc28gYWRkIHRoZSBmaXRuZXNzIHRvIHRoZSBkYXRhZnJhbWUgZm9yIGl0ZXJhdGlvbiBjdXRvZmZzCiAgR1Bhci5uZXckZml0ID0gbWF4KEdBLnByZWRAZml0bmVzcykKICAKICAjIFJldHVybiB0aGUgbmV3IHBvaW50IGFuZCB0aGUgZml0bmVzcwogIHJldHVybihHUGFyLm5ldykKfQoKYGBgCgpBcHBseWluZyB0aGUgZnVuY3Rpb25zIHdpdGggYSBsb29waW5nIGl0ZXJhdGl2ZSBzZWFyY2gKCmBgYHtyIE9wdGltYWwgQ2FwdHVyZSBNYXJnaW5hbHM6IFJlZmluZW1lbnQgSXRlcmF0aW9uc30KIyBMb2FkIGRhdGEKR1Bhci5hbGwgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfOTBDYXBfZGF0YS5jc3YnKQojIFJlbW92ZSBpbmRpY2VzCkdQYXIuYWxsID0gR1Bhci5hbGxbLCAhKG5hbWVzKEdQYXIuYWxsKSAlaW4lIGMoIlgiKSldCgojIEZpcnN0IGl0ZXJhdGlvbiB0byBzZXQgdGhlIGJhc2VsaW5lIG9mIGhvdyBtdWNoIGltcHJvdmVtZW50IHRoZXJlIGlzIHRvIGZpbmQuCm5ld3BvaW50ID0gZmlsbC5zYW1wbGUub3B0KEdQYXIuZGF0YSA9IEdQYXIuYWxsKQpzdGFydC5maXQgPSBuZXdwb2ludCRmaXQ7IApjdXJyZW50LmZpdCA9IG5ld3BvaW50JGZpdDsgCgojIFJlcGVhdCBmb3IgYSBtYXhpbXVtIG9mIDIwMCBpdGVyYXRpb25zLCBvciB1bnRpbCB0aGUgZml0bmVzcyBkcm9wcyBiZWxvdyAxLzEwMDAgb2YgdGhlIHN0YXJ0aW5nIGZpdG5lc3MsIAojIGluZGljYXRpbmcgbGl0dGxlIGZ1cnRoZXIgaW1wcm92ZW1lbnQKbWF4Lml0ZXIgPSBtYXgoR1Bhci5hbGwkb3JkZXIpICsgMTAwCndoaWxlKG1heChHUGFyLmFsbCRvcmRlcikgPCBtYXguaXRlciAmIGN1cnJlbnQuZml0KjFlMyA+IHN0YXJ0LmZpdCl7CiAgR1Bhci5hbGwgPSByYmluZChHUGFyLmFsbCwgbmV3cG9pbnRbLG5hbWVzKG5ld3BvaW50KSAlaW4lIG5hbWVzKEdQYXIuYWxsKV0pCiAgbmV3cG9pbnQgPSBmaWxsLnNhbXBsZS5vcHQoR1Bhci5kYXRhID0gR1Bhci5hbGwpCiAgY3VycmVudC5maXQgPSBuZXdwb2ludCRmaXQKfQoKIyBTdG9yZSB0aGUgZGF0YQp3cml0ZS5jc3YoR1Bhci5hbGwsIGZpbGUgPSAnR1Bhcl85MENhcE9wdF9kYXRhLmNzdicpCiMgVXBkYXRlZCBQYXJldG8gZnJvbnQKdGVzdCA9IGFzLm1hdHJpeChHUGFyLmFsbFtHUGFyLmFsbCRGbHV4Lm1vbC5tMnMgPiAwLG5hbWVzKEdQYXIuYWxsKSAlaW4lIGMoJ0VuZXJneS5rSi5tb2wnLCAnRmx1eC5tb2wubTJzJyldKQojIEZvciB0aGUgUGFyZXRvIGZyb250IGRldGVybWluYXRpb24sIG5lZWQgYm90aCB0byBtaW5pbWl6ZQp0ZXN0WywyXSA9IC10ZXN0WywyXQpwYXIuZnJvbnQgPSB0KG5vbmRvbWluYXRlZF9wb2ludHMocG9pbnRzID0gdCh0ZXN0KSkpCnBhci5mcm9udFssMl0gPSAtcGFyLmZyb250WywyXQojIElkZW50aWZ5IHRoZSBjb25kaXRpb25zIGxlYWRpbmcgdG8gdGhlIFBhcmV0byBmcm9udApHUGFyLmZyb250ID0gZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sICVpbiUgcGFyLmZyb250WywxXSwgRmx1eC5tb2wubTJzICVpbiUgcGFyLmZyb250WywyXSkKR1Bhci5mcm9udCA9IEdQYXIuZnJvbnRbLCFuYW1lcyhHUGFyLmZyb250KSAlaW4lICdYJ10Kd3JpdGUuY3N2KEdQYXIuZnJvbnQsIGZpbGUgPSAnR1Bhcl9mbnRfZGF0YV85MENhcE9wdC5jc3YnKQoKYGBgCgoKYGBge3IgT3B0aW1hbCBDYXB0dXJlIE1hcmdpbmFsczogUmVmaW5lbWVudCBQbG90fQpHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl85MENhcE9wdF9kYXRhLmNzdicpCkdQYXIuZnJvbnQgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfZm50X2RhdGFfOTBDYXBPcHQuY3N2JykKCmdncGxvdCgpICsKICAjIEJvdW5kcwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9ICA0MCwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gbWF4KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwKSRGbHV4Lm1vbC5tMnMpKjAuMSwgbGluZXR5cGUgPSAyKSArCiAgIyBEYXRhCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBGbHV4Lm1vbC5tMnMgPiAtMC4xLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBvcmRlciA8PSAzMDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBGbHV4Lm1vbC5tMnMgPiAtMC4xLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBvcmRlciA+IDMwMCksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCksIGNvbG9yID0gJ2N5YW4nKSArCiAgZmFjZXRfZ3JpZCgufkZsdXgubW9sLm0ycyA+IDAsIHNjYWxlcyA9ICdmcmVlX3gnKSArCiAgZ2VvbV9wb2ludChkYXRhID0gR1Bhci5mcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCksIGNvbG9yID0gJ3JlZCcpICsKICBnZW9tX2xpbmUoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpLCBjb2xvciA9ICdyZWQnKSArCiAgbGFicyh4ID0gJ0NPMiBGbHV4IChtb2wvbTIvcyknLCB5ID0gJ0VuZXJneSAoa0ovbW9sIEMpJykKCmdncGxvdCgpICsKICAjIEJvdW5kcwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9ICA0MCwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gbWF4KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwKSRGbHV4Lm1vbC5tMnMpKjAuMSwgbGluZXR5cGUgPSAyKSArCiAgIyBEYXRhCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBGbHV4Lm1vbC5tMnMgPiAwLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBvcmRlciA8PSAzMDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBGbHV4Lm1vbC5tMnMgPiAwLCBFbmVyZ3kua0oubW9sIDwgMTAwLCBvcmRlciA+IDMwMCksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCksIGNvbG9yID0gJ2N5YW4nKSArCiAgZ2VvbV9wb2ludChkYXRhID0gR1Bhci5mcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCksIGNvbG9yID0gJ3JlZCcpICsKICBnZW9tX2xpbmUoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpLCBjb2xvciA9ICdyZWQnKSArCiAgbGFicyh4ID0gJ0NPMiBGbHV4IChtb2wvbTIvcyknLCB5ID0gJ0VuZXJneSAoa0ovbW9sIEMpJykKCgpgYGAKCmBgYHtyIENvbXBhcmlzb246IEJydXRlIGZvcmNlIHNlYXJjaH0KIyBDb21wYXJlIHRvIGJydXRlIGZvcmNlIHNlYXJjaApHUGFyLmNvbXAgPSByZWFkLmNzdihmaWxlID0gJ1NvcmJlbnRBY3RpdmF0aW9uLTJlLU1vbnRlQ2FybG8tSHVsbFBlcmltZXRlckRpc3RhbmNlLXYzLWJldGEyLTBlMC5jc3YnKQoKIyBVcGRhdGVkIFBhcmV0byBmcm9udAp0ZXN0ID0gYXMubWF0cml4KEdQYXIuY29tcFtHUGFyLmNvbXAkRElDLmZsdXggPiAwLG5hbWVzKEdQYXIuY29tcCkgJWluJSBjKCdFbmVyZ3kuc2VwJywgJ0RJQy5mbHV4JyldKQojIEZvciB0aGUgUGFyZXRvIGZyb250IGRldGVybWluYXRpb24sIG5lZWQgYm90aCB0byBtaW5pbWl6ZQp0ZXN0WywyXSA9IC10ZXN0WywyXQpwYXIuZnJvbnQgPSB0KG5vbmRvbWluYXRlZF9wb2ludHMocG9pbnRzID0gdCh0ZXN0KSkpCnBhci5mcm9udFssMl0gPSAtcGFyLmZyb250WywyXQojIElkZW50aWZ5IHRoZSBjb25kaXRpb25zIGxlYWRpbmcgdG8gdGhlIFBhcmV0byBmcm9udApHUGFyLmNvbXBmcm9udCA9IGZpbHRlcihHUGFyLmNvbXAsIEVuZXJneS5zZXAgJWluJSBwYXIuZnJvbnRbLDFdLCBESUMuZmx1eCAlaW4lIHBhci5mcm9udFssMl0pCkdQYXIuY29tcGZyb250ID0gR1Bhci5jb21wZnJvbnRbLCFuYW1lcyhHUGFyLmNvbXBmcm9udCkgJWluJSAnWCddCgojIFpvb20gb24gb3B0aW1hbCByZWdpb24KZ2dwbG90KCkgKwogICMgTmV3IG1ldGhvZAogIGdlb21fcG9pbnQoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRmx1eC5tb2wubTJzID4gbWF4KGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwKSRGbHV4Lm1vbC5tMnMpKjAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5lcmd5LmtKLm1vbCA8IDQwKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBGbHV4Lm1vbC5tMnMsIHkgPSBFbmVyZ3kua0oubW9sKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpLCBjb2xvciA9ICdyZWQnKSArCiAgZ2VvbV9saW5lKGRhdGEgPSBHUGFyLmZyb250LCBtYXBwaW5nID0gYWVzKHggPSBGbHV4Lm1vbC5tMnMsIHkgPSBFbmVyZ3kua0oubW9sKSwgY29sb3IgPSAncmVkJykgKwogIAogICMgQnJ1dGUgZm9yY2Ugc2VhcmNoCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuY29tcCwgRElDLmZsdXggPiBtYXgoZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgNDApJEZsdXgubW9sLm0ycykqMC4xLAogICAgICAgICAgICAgICAgICAgICAgICAgICBFbmVyZ3kuc2VwIDwgNDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IERJQy5mbHV4LCB5ID0gRW5lcmd5LnNlcCksIGNvbG9yID0gJ2N5YW4nLCBzaGFwZSA9IDIpICsKICBnZW9tX3BvaW50KGRhdGEgPSBHUGFyLmNvbXBmcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRElDLmZsdXgsIHkgPSBFbmVyZ3kuc2VwKSwgY29sb3IgPSAncHVycGxlJywgc2hhcGUgPSAyKSArCiAgZ2VvbV9saW5lKGRhdGEgPSBHUGFyLmNvbXBmcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRElDLmZsdXgsIHkgPSBFbmVyZ3kuc2VwKSwgY29sb3IgPSAncHVycGxlJykgKwoKICBsYWJzKHggPSAnQ08yIEZsdXggKG1vbC9tMi9zKScsIHkgPSAnRW5lcmd5IChrSi9tb2wgQyknKSArCiAgc2NhbGVfeF9sb2cxMCgpCgojIE1hcCB0aGUgUGFyZXRvIGZyb250cyBvbnRvIHRoZSBwa2EgYW5kIGNvbmNlbnRyYXRpb24gYXhlcwpnZ3Bsb3QoKSArCiAgIyBDYWxjdWxhdGVkIG9wdGltYQogIGdlb21fcG9pbnQoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiwgY29sb3IgPSAnYmF5ZXMnKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IEdQYXIuY29tcGZyb250LCBtYXBwaW5nID0gYWVzKHggPSAtbG9nMTAoazEpLCB5ID0gLWxvZzEwKGsyKSwgY29sb3IgPSAncnNhbXAnKSkgKwogICMgVHJ1ZSBkYXRhCiAgZ2VvbV9wb2ludChmaWx0ZXIocXVpbm9uZS5kYXRhLCBQa2EuMiA+IDcuNSwgUGthLjEgPiAzKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBQa2EuMSwgeSA9IFBrYS4yLCBjb2xvciA9ICd0cnVlJyksIGFscGhhID0gMC41KSArCiAgZ2VvbV9wYXRoKGRhdGEgPSBkYXRhLmZyYW1lKHggPSBjKDcsIDE0KSwgeSA9IGMoNywgMTQpKSwKICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0geCwgeSA9IHkpLCBjb2xvciA9ICdibGFjaycsIGxpbmV0eXBlID0gMikgKwogIGdlb21fcGF0aChkYXRhID0gZGF0YS5mcmFtZSh4ID0gYygzLCAxNCksIHkgPSBjKDMsIDE0KSs1LjUpLAogICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSB4LCB5ID0geSksIGNvbG9yID0gJ2JsYWNrJywgbGluZXR5cGUgPSAyKSArCiAgCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ2JheWVzJyA9ICdyZWQnLCAncnNhbXAnID0gJ2JsdWUnLCAndHJ1ZScgPSAnYmxhY2snKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygnYmF5ZXMnID0gJ0V4cGxvaXQgKyBFeHBsb3JlJywgJ3JzYW1wJyA9ICdFeHBsb2l0IG9ubHknLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ1ZScgPSAnS25vd24gTWVhc3VyZW1lbnRzJyksCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnJykgKwogIGxhYnMoeCA9IGV4cHJlc3Npb24oJ3AnKml0YWxpYyhLKVsnYSwxJ10pLCB5ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspWydhLDInXSkpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkgKyBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSkKCmdncGxvdCgpICsKICBnZW9tX3BvaW50KGRhdGEgPSBHUGFyLmZyb250LCBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBebG9nQSAqIDEwXk5hLkEsIGNvbG9yID0gJ2JheWVzJykpICsKICBnZW9tX3BvaW50KGRhdGEgPSBHUGFyLmNvbXBmcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gQSwgeSA9IGFicyhOYSksIGNvbG9yID0gJ3JzYW1wJykpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygnYmF5ZXMnID0gJ3JlZCcsICdyc2FtcCcgPSAnYmx1ZScpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCdiYXllcycgPSAnRXhwbG9pdCArIEV4cGxvcmUnLCAncnNhbXAnID0gJ0V4cGxvaXQgb25seScpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJycpICsKICBsYWJzKHggPSAne1F1aW5vbmV9JywgeSA9ICd7TmFPSH0nKSArCiAgc2NhbGVfeF9sb2cxMCgpICsgc2NhbGVfeV9sb2cxMCgpCgpgYGAKCkZpbHRlcmVkIHJhbmRvbSBzYW1wbGluZyAoZXhwbG9pdGF0aW9uIG9ubHkpIGZpbmRzIG1vcmUgcG9pbnRzIGNsb3NlIHRvIHRoZSBQYXJldG8gZnJvbnQgYnV0IGRvZXMgbm90IGRlc2NyaWJlIHRoZSBmdWxsIGJvdW5kYXJ5LCBpbnN0ZWFkIHRyZWF0aW5nIHRoZSBlbnRpcmUgcmVnaW9uIGFzIGlmIGl0IHdlcmUgb3B0aW1hbC4KQWRkaXRpb25hbGx5LCB0aGUgY29uc3RyYWludHMgb24gdGhlIHNlYXJjaCB3ZXJlIGRpZmZlcmVudCwgc28gaXQgaXMgZGlmZmljdWx0IHRvIGNvbXBhcmUgdGhlIG9wdGltYS4KCkhvd2V2ZXIsIHRoaXMgaWxsdXN0cmF0ZXMgdGhhdCB0aGUgcmFuZ2Ugb2YganVzdCB0aGUgb3B0aW1hIGlzIG11Y2ggd2lkZXIgdGhhbiB3b3VsZCBiZSBwZXJjZWl2ZWQgd2l0aCBqdXN0IGFuIGV4cGxvaXRhdGlvbiBzZWFyY2gsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgUGFyZXRvIGZyb250cyBhcmUgbmVhcmx5IHRoZSBzYW1lLgpJbiBmYWN0LCB0aGUgZXhwbG9yYXRpb24gaGVscHMgZmluZCBuZXcgcmVnaW9ucyB0aGF0IGxlYWQgdG8gZmFzdGVyIGZsdXhlcyBhbmQgbG93ZXIgZW5lcmdpZXMuClRoaXMgbGVhZHMgdG8gYnJvYWRlciBhbmQgbG93ZXIgcGVha3MuCgpDb21wYXJlIHRoZSBvcHRpbWFsIHJlZ2lvbnMgYnkgdGhlIHNhbXBsaW5nIGRlbnNpdGllcwoKYGBge3J9CkUuY3V0b2YgPSA0MDsgRi5jdXRvZiA9IDAuMSptYXgoR1Bhci5hbGwkRmx1eC5tb2wubTJzKQpnMSA9IGdncGxvdCgpICsKICBnZW9tX2RlbnNpdHkoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IEUuY3V0b2YsIEZsdXgubW9sLm0ycyA+IEYuY3V0b2YpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwa2ExKSwgY29sb3IgPSAnYmx1ZScpICsKICBnZW9tX2RlbnNpdHkoZGF0YSA9IGZpbHRlcihHUGFyLmNvbXAsIEVuZXJneS5zZXAgPCBFLmN1dG9mLCBESUMuZmx1eCA+IEYuY3V0b2YpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAtbG9nMTAoazEpKSwgY29sb3IgPSAncmVkJykgKwogIGxhYnMoeCA9IGV4cHJlc3Npb24oJ3AnKml0YWxpYyhLKVsnYSwxJ10pLCB5ID0gJ0RlbnNpdHknKQoKZzMgPSBnZ3Bsb3QoKSArCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCBFLmN1dG9mLCBGbHV4Lm1vbC5tMnMgPiBGLmN1dG9mKSwKICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcGthMSArIHBrYTIpLCBjb2xvciA9ICdibHVlJykgKwogIGdlb21fZGVuc2l0eShkYXRhID0gZmlsdGVyKEdQYXIuY29tcCwgRW5lcmd5LnNlcCA8IEUuY3V0b2YsIERJQy5mbHV4ID4gRi5jdXRvZiksCiAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IC1sb2cxMChrMikpLCBjb2xvciA9ICdyZWQnKSArCiAgbGFicyh4ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspWydhLDInXSksIHkgPSAnRGVuc2l0eScpCgpnMiA9IGdncGxvdCgpICsKICBnZW9tX2RlbnNpdHkoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IEUuY3V0b2YsIEZsdXgubW9sLm0ycyA+IEYuY3V0b2YpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBKSwgY29sb3IgPSAnYmx1ZScpICsKICBnZW9tX2RlbnNpdHkoZGF0YSA9IGZpbHRlcihHUGFyLmNvbXAsIEVuZXJneS5zZXAgPCBFLmN1dG9mLCBESUMuZmx1eCA+IEYuY3V0b2YpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBBKSwgY29sb3IgPSAncmVkJykgKwogIHNjYWxlX3hfbG9nMTAoKSArCiAgbGFicyh4ID0gJ3tRdWlub25lfScsIHkgPSAnRGVuc2l0eScpCgpnNCA9IGdncGxvdCgpICsKICBnZW9tX2RlbnNpdHkoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IEUuY3V0b2YsIEZsdXgubW9sLm0ycyA+IEYuY3V0b2YpLAogICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBICogMTBeTmEuQSwgY29sb3IgPSAnYmx1ZScpKSArCiAgZ2VvbV9kZW5zaXR5KGRhdGEgPSBmaWx0ZXIoR1Bhci5jb21wLCBFbmVyZ3kuc2VwIDwgRS5jdXRvZiwgRElDLmZsdXggPiBGLmN1dG9mKSwKICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gYWJzKE5hKSwgY29sb3IgPSAncmVkJykpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIGxhYnMoeCA9ICd7TmFPSH0nLCB5ID0gJ0RlbnNpdHknKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IGMoJ3JlZCcgPSAnRXhwbG9pdCBvbmx5JywgJ2JsdWUnID0gJ0V4cGxvaXQgKyBFeHBsb3JlJyksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoJ3JlZCcgPSAncmVkJywgJ2JsdWUnID0gJ2JsdWUnKSwgbmFtZSA9ICcnKQoKCihnMSArIGcyKSAvIChnMyArIGc0KQpybShnMSwgZzIsIGczLCBnNCkKYGBgCgpUaGUgZGVuc2l0aWVzIHNob3cgZGlzdGluY3QgZGlmZmVyZW5jZXMgaW4gdGhlIHBLYXMsIGFuZCBzbGlnaHQgZGlmZmVyZW5jZXMgaW4gY29uY2VudHJhdGlvbnMuClRoZSBkaWZmZXJlbmNlcyBhcmUgbGlrZWx5IGFzc29jaWF0ZWQgd2l0aCBiZWluZyBzb3VyY2VkIGZyb20gZGlmZmVyZW50IHJhbmdlczogdGhlIHJhbmdlIG9mIHBLYXMgZm9yIHRoZSBleHBsb2l0YXRpb24gb25seSBzZWFyY2ggcmVzdHJpY3RlZCB0aGUgcEthMiB0byBsb3dlciB2YWx1ZXMgb3ZlcmFsbCwgYnV0IGxhcmdlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHBLYTIgYW5kIHBLYTEsIGxlYWRpbmcgdG8gZGlmZmVyZW50IG9wdGltYWwgcmVnaW9ucy4KVGhlIGNvbmNlbnRyYXRpb24gb2Ygc2FsdCB0byBhZGQgaXMgcm91Z2hseSB0aGUgc2FtZSBhdCBhYm91dCAwLjAxIHRvIDAuMSBNIE5hT0gsIGFsdGhvdWdoIHRoZSBleHBsb3JhdGlvbiBsZWFkcyB0byBhIGJyb2FkZXIgcGVhay4KVGhlIGNvbmNlbnRyYXRpb24gb2YgcXVpbm9uZSBhY3R1YWxseSBzaG93cyB0aGF0IGEgbG93ZXIgY29uY2VudHJhdGlvbiAocm91Z2hseSAyMDAgbU0pIGlzIGhpZ2hseSByZXByZXNlbnRlZCBpbiB0aGUgb3B0aW1hbCByZWdpb24sIGxpa2VseSBiZWNhdXNlIGhpZ2ggY29uY2VudHJhdGlvbnMgb2YgcXVpbm9uZSByZXF1aXJlIGV2ZW4gaGlnaGVyIE5hT0ggY29uY2VudHJhdGlvbnMgd2hpY2ggY2Fubm90IGJlIGFjaGlldmVkLgoKIyBQb3N0LXJlZmluZW1lbnQgbWFyZ2luYWxzCk1hcmdpbmFsaXplIHdpdGggMiAyRCBncmlkcyAocEthIGFuZCBjb25jZW50cmF0aW9uKSwgYXMgdGhlIDFEIG1ldHJpY3MgZGlkIG5vdCBwcm92aWRlIHVzZWZ1bCBpbnNpZ2h0cy4KClRoZSBHUCBtb2RlbHMgYXJlIGFibGUgdG8gaGFuZGxlIGNvcnJlbGF0ZWQgaW5wdXRzOyB0aGUgcHJpbWFyeSByZWFzb24gZm9yIGRlLWNvcnJlbGF0aW5nIGlucHV0cyBpcyB0byByZS1tYXAgdGhlIHNlYXJjaCBzcGFjZSBpbnRvIGEgcmVjdGFuZ3VsYXIgZm9ybSBmb3IgZWFzaWVyIHNhbXBsaW5nLgpUaGlzIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiBkb2luZyBmZWF0dXJlIGltcG9ydGFuY2Ugb3IgYXNzZXNzaW5nIHRoZSBtYXJnaW5hbHMuClNpbmNlIHRoZSBuYXR1cmFsIGZvcm1zIG9mIHRoZSB2YXJpYWJsZXMgYXJlIGVhc2llciB0byBpbnRlcnByZXQsIHRoZSBmZWF0dXJlIGltcG9ydGFuY2UgYW5kIG1hcmdpbmFscyB3aWxsIHVzZSB0aGUgbmF0dXJhbCB2YXJpYWJsZXMsIGkuZS4gbm90IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHBLYXMgYW5kIHRoZSByYXRpbyBvZiBOYU9IIHRvIHF1aW5vbmUuCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzIE5hdHVyYWwgR1AgTW9kZWw6IDJEfQpFLmN1dG9mID0gbG9nMTAoNDApOyAja0ovbW9sIEMsIGxvZyB1bml0cwpGLmN1dG9mID0gMC4xKm1heChHUGFyLmFsbCRGbHV4Lm1vbC5tMnMpCgojIE5hdHVyYWwgdmFyaWFibGVzIGNvbnZlcnNpb24KR1Bhci5uYXQgPSBHUGFyLmFsbApHUGFyLm5hdCRwa2EyID0gR1Bhci5uYXQkcGthMSArIEdQYXIubmF0JHBrYTIKR1Bhci5uYXQkTmEuQSA9IEdQYXIubmF0JGxvZ0EgKyBHUGFyLm5hdCROYS5BCgojIE1vZGVscwptb2QuZmx1eCA9IGZpbGwuc2FtcGxlLm1vZChHUGFyLmRhdGEgPSBHUGFyLm5hdCwgaW5wdXQubmFtZSA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRmx1eC5tb2wubTJzJykKbW9kLmVuZXIgPSBmaWxsLnNhbXBsZS5lbmVyKEdQYXIuZGF0YSA9IEdQYXIubmF0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm5hbWUgPSBjKCdwa2ExJywgJ3BrYTInLCAnbG9nQScsICdOYS5BJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQubmFtZSA9ICdFbmVyZ3kua0oubW9sJykKCiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24uIFNhbWUgZ3JpZCBiZWNhdXNlIHRoZSBzYW1lIGxpbWl0cyBvbiBwaHlzaWNhbCBzeXN0ZW1zCnJlc29sdXRpb24gPSAzNTsgTUNzYW1wID0gMjAwMApwa2ExLnJuZyA9IGMoMiwgMTMuNSk7IHBrYTIucm5nID0gYygwLCA1LjUpCmxvZ0Eucm5nID0gYygtMiwgMC41KTsgTmEuQS5ybmcgPSBjKC03LCAwLjcpCmxvd2VyID0gMC4yNTsgdXBwZXIgPSAwLjc1CgojIFNldCB1cCB0aGUgZ3JpZCBzZWFyY2gKcGthWC5ncmlkID0gZXhwYW5kLmdyaWQoc2VxKGZyb20gPSBwa2ExLnJuZ1sxXSwgdG8gPSBwa2ExLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBzZXEoZnJvbSA9IHBrYTIucm5nWzFdLCB0byA9IHBrYTIucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbikpCnBrYVguZ3JpZCA9IHBrYVguZ3JpZFssYygxOjIpXQpuYW1lcyhwa2FYLmdyaWQpID0gYygncGthMScsICdwa2EyJykKcGthWC5ncmlkJHAgPSBOYU47IHBrYVguZ3JpZCRsID0gTmFOOyBwa2FYLmdyaWQkcyA9IE5hTiAjIFByb2JhYmlsaXR5IGFuZCB0aGUgaGlnaCBhbmQgbG93CgojIE5vdGU6IGZvciB0aGUgTmEvQSByYXRpbywgdGhlIGludGVyZXN0IGlzIGluIHRoZSBvcmRlciBvZiBtYWduaXR1ZGUgc2hpZnRzLCBub3QgdGhlIGFic29sdXRlIHNoaWZ0cywgZ29pbmcgZG93biB0byAxMF4tNy4KIyBTaW5jZSBpdCBpcyBiZWluZyB0ZXN0ZWQgZm9yIGJvdGggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnV0IHRoZXkgYXJlIG9mIHNpbWlsYXIgb3JkZXIgb2YgbWFnbml0dWRlLCBoYWxmIHdpbGwgYmUgZGVkaWNhdGVkIHRvIGVhY2ggc2lkZQpjb25jLmdyaWQgPSBleHBhbmQuZ3JpZChzZXEoZnJvbSA9IGxvZ0Eucm5nWzFdLCB0byA9IGxvZ0Eucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcShmcm9tID0gTmEuQS5ybmdbMV0sIHRvID0gTmEuQS5ybmdbMl0sIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSkKY29uYy5ncmlkID0gY29uYy5ncmlkWyxjKDE6MildCm5hbWVzKGNvbmMuZ3JpZCkgPSBjKCdsb2dBJywgJ05hLkEnKQpjb25jLmdyaWQkcCA9IE5hTjsgY29uYy5ncmlkJGwgPSBOYU47IGNvbmMuZ3JpZCRzID0gTmFOICMgUHJvYmFiaWxpdHkgYW5kIHRoZSBoaWdoIGFuZCBsb3dsb3dlciA9IDAuMjU7IHVwcGVyID0gMC43NQoKZm9yKGkgaW4gMTpucm93KHBrYVguZ3JpZCkpewogICMgcEthcwogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKHBrYTEgPSBwa2FYLmdyaWQkcGthMVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcGthWC5ncmlkJHBrYTFbaV0gKyBwa2FYLmdyaWQkcGthMltpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICBmaWxsLmZyYW1lJE5hLkEgPSBmaWxsLmZyYW1lJE5hLkEgKyBmaWxsLmZyYW1lJGxvZ0EKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICBwa2FYLmdyaWQkcFtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwa2FYLmdyaWQkaFtpXSA9IHF1YW50aWxlKGZpbHRlcihmaWxsLmZyYW1lLCAhaXMubmFuKHAuYWNjZXB0KSkkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAgcGthWC5ncmlkJGxbaV0gPSBxdWFudGlsZShmaWx0ZXIoZmlsbC5mcmFtZSwgIWlzLm5hbihwLmFjY2VwdCkpJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQoKICAjIENvbmNlbnRyYXRpb25zCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMiA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTIucm5nWzFdLCBtYXggPSBwa2EyLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTEucm5nWzFdLCBtYXggPSBwa2ExLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IGNvbmMuZ3JpZCRsb2dBW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBjb25jLmdyaWQkbG9nQVtpXSArIGNvbmMuZ3JpZCROYS5BW2ldKQogIGZpbGwuZnJhbWUkcGthMiA9IGZpbGwuZnJhbWUkcGthMSArIGZpbGwuZnJhbWUkcGthMgogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIGNvbmMuZ3JpZCRwW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIGNvbmMuZ3JpZCRoW2ldID0gcXVhbnRpbGUoZmlsdGVyKGZpbGwuZnJhbWUsICFpcy5uYW4ocC5hY2NlcHQpKSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBjb25jLmdyaWQkbFtpXSA9IHF1YW50aWxlKGZpbHRlcihmaWxsLmZyYW1lLCAhaXMubmFuKHAuYWNjZXB0KSkkcC5hY2NlcHQsIHByb2JzID0gbG93ZXIpCn0KCgpgYGAKCgpgYGB7ciBPcHRpbWFsIENhcHR1cmUgTWFyZ2luYWxzIE5hdHVyYWwgR1AgTW9kZWw6IDJEIFBsb3RzfQpsaW0gPSBjKGZsb29yKG1pbihwa2FYLmdyaWQkbCkqMTApLzEwLCBjZWlsaW5nKG1heChwa2FYLmdyaWQkaCkqMTApLzEwKTsgbWlkID0gbWVhbihsaW0pCmcxID0gZ2dwbG90KGZpbHRlcihwa2FYLmdyaWQsICFpcy5uYW4ocCkpKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gcGthMSArIHBrYTIsIGNvbG9yID0gbCkpICsKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPiA0MCB8IEZsdXgubW9sLm0ycyA8IDAuMSptYXgoRmx1eC5tb2wubTJzKSksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTEgKyBwa2EyKSwgY29sb3IgPSAncmVkJywgc2l6ZSA9IDAuMSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwLCBGbHV4Lm1vbC5tMnMgPiAwLjEqbWF4KEZsdXgubW9sLm0ycykpLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiksIGNvbG9yID0gJ2JsdWUnLCBzaXplID0gMC4xKSArCiAgbGFicyh4ID0gJ3BrYTEnLCB5ID0gJ3BrYTInLCBjb2xvciA9ICdQW09wdGltYWxdJywgc3VidGl0bGUgPSAnMjV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAncHVycGxlJywgaGlnaCA9ICdvcmFuZ2UnLCBtaWQgPSAnd2hpdGUnLCBtaWRwb2ludCA9IG1pZCwgbGltaXRzID0gbGltKSArCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gJ2dyZXknKSkgKwogIGd1aWRlcyhjb2xvciA9IEZBTFNFKQpnMiA9IGdncGxvdChmaWx0ZXIocGthWC5ncmlkLCAhaXMubmFuKHApKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTEgKyBwa2EyLCBjb2xvciA9IHApKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sID4gNDAgfCBGbHV4Lm1vbC5tMnMgPCAwLjEqbWF4KEZsdXgubW9sLm0ycykpLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiksIGNvbG9yID0gJ3JlZCcsIHNpemUgPSAwLjEpICsKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCA0MCwgRmx1eC5tb2wubTJzID4gMC4xKm1heChGbHV4Lm1vbC5tMnMpKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gcGthMSArIHBrYTIpLCBjb2xvciA9ICdibHVlJywgc2l6ZSA9IDAuMSkgKwogIGxhYnMoeCA9ICdwa2ExJywgeSA9ICdwa2EyJywgY29sb3IgPSAnUFtPcHRpbWFsXScsIHN1YnRpdGxlID0gJ01lYW4nKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAnZ3JleScpKSArCiAgZ3VpZGVzKGNvbG9yID0gRkFMU0UpCmczID0gZ2dwbG90KGZpbHRlcihwa2FYLmdyaWQsICFpcy5uYW4ocCkpKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gcGthMSArIHBrYTIsIGNvbG9yID0gaCkpICsKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPiA0MCB8IEZsdXgubW9sLm0ycyA8IDAuMSptYXgoRmx1eC5tb2wubTJzKSksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHBrYTEgKyBwa2EyKSwgY29sb3IgPSAncmVkJywgc2l6ZSA9IDAuMSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwLCBGbHV4Lm1vbC5tMnMgPiAwLjEqbWF4KEZsdXgubW9sLm0ycykpLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTEsIHkgPSBwa2ExICsgcGthMiksIGNvbG9yID0gJ2JsdWUnLCBzaXplID0gMC4xKSArCiAgbGFicyh4ID0gJ3BrYTEnLCB5ID0gJ3BrYTInLCBjb2xvciA9ICdQW09wdGltYWxdJywgc3VidGl0bGUgPSAnNzV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAncHVycGxlJywgaGlnaCA9ICdvcmFuZ2UnLCBtaWQgPSAnd2hpdGUnLCBtaWRwb2ludCA9IG1pZCwgbGltaXRzID0gbGltKSArCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gJ2dyZXknKSkKZzEgKyBnMiArIGczCgpsaW0gPSBjKGZsb29yKG1pbihjb25jLmdyaWQkbCkqMTApLzEwLCBjZWlsaW5nKG1heChjb25jLmdyaWQkaCkqMTApLzEwKTsgbWlkID0gbWVhbihsaW0pCmcxID0gZ2dwbG90KGZpbHRlcihjb25jLmdyaWQsICFpcy5uYW4ocCkpKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBeTmEuQSoxMF5sb2dBLCBjb2xvciA9IGwpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sID4gNDAgfCBGbHV4Lm1vbC5tMnMgPCAwLjEqbWF4KEZsdXgubW9sLm0ycykpLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSAxMF5OYS5BKjEwXmxvZ0EpLCBjb2xvciA9ICdyZWQnLCBzaXplID0gMC4xKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBFbmVyZ3kua0oubW9sIDwgNDAsIEZsdXgubW9sLm0ycyA+IDAuMSptYXgoRmx1eC5tb2wubTJzKSksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IDEwXk5hLkEqMTBebG9nQSksIGNvbG9yID0gJ2JsdWUnLCBzaXplID0gMC4xKSArCiAgbGFicyh4ID0gJ1tRdWlub25lXScsIHkgPSAnW3BIIENvcnJlY3RhbnRdJywgY29sb3IgPSAnUFtPcHRpbWFsXScsIHN1YnRpdGxlID0gJzI1dGggUGVyY2VudGlsZScpICsKICBzY2FsZV94X2xvZzEwKCkgKyBzY2FsZV95X2xvZzEwKCkgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50Mihsb3cgPSAncHVycGxlJywgaGlnaCA9ICdvcmFuZ2UnLCBtaWQgPSAnd2hpdGUnLCBtaWRwb2ludCA9IG1pZCwgbGltaXRzID0gbGltKSArCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gJ2dyZXknKSkgKwogIGd1aWRlcyhjb2xvciA9IEZBTFNFKQpnMiA9IGdncGxvdChmaWx0ZXIoY29uYy5ncmlkLCAhaXMubmFuKHApKSkgKwogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IDEwXk5hLkEqMTBebG9nQSwgY29sb3IgPSBwKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA+IDQwIHwgRmx1eC5tb2wubTJzIDwgMC4xKm1heChGbHV4Lm1vbC5tMnMpKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBeTmEuQSoxMF5sb2dBKSwgY29sb3IgPSAncmVkJywgc2l6ZSA9IDAuMSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGZpbHRlcihHUGFyLmFsbCwgRW5lcmd5LmtKLm1vbCA8IDQwLCBGbHV4Lm1vbC5tMnMgPiAwLjEqbWF4KEZsdXgubW9sLm0ycykpLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSAxMF5OYS5BKjEwXmxvZ0EpLCBjb2xvciA9ICdibHVlJywgc2l6ZSA9IDAuMSkgKwogIGxhYnMoeCA9ICdbUXVpbm9uZV0nLCB5ID0gJ1twSCBDb3JyZWN0YW50XScsIGNvbG9yID0gJ1BbT3B0aW1hbF0nLCBzdWJ0aXRsZSA9ICdNZWFuJykgKwogIHNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsgIAogIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICdncmV5JykpICsKICBndWlkZXMoY29sb3IgPSBGQUxTRSkKZzMgPSBnZ3Bsb3QoZmlsdGVyKGNvbmMuZ3JpZCwgIWlzLm5hbihwKSkpICsKICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IDEwXmxvZ0EsIHkgPSAxMF5OYS5BKjEwXmxvZ0EsIGNvbG9yID0gaCkpICsKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPiA0MCB8IEZsdXgubW9sLm0ycyA8IDAuMSptYXgoRmx1eC5tb2wubTJzKSksIAogICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IDEwXk5hLkEqMTBebG9nQSksIGNvbG9yID0gJ3JlZCcsIHNpemUgPSAwLjEpICsKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgPCA0MCwgRmx1eC5tb2wubTJzID4gMC4xKm1heChGbHV4Lm1vbC5tMnMpKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gMTBeTmEuQSoxMF5sb2dBKSwgY29sb3IgPSAnYmx1ZScsIHNpemUgPSAwLjEpICsKICBsYWJzKHggPSAnW1F1aW5vbmVdJywgeSA9ICdbcEggQ29ycmVjdGFudF0nLCBjb2xvciA9ICdQW09wdGltYWxdJywgc3VidGl0bGUgPSAnNzV0aCBQZXJjZW50aWxlJykgKwogIHNjYWxlX3hfbG9nMTAoKSArIHNjYWxlX3lfbG9nMTAoKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQyKGxvdyA9ICdwdXJwbGUnLCBoaWdoID0gJ29yYW5nZScsIG1pZCA9ICd3aGl0ZScsIG1pZHBvaW50ID0gbWlkLCBsaW1pdHMgPSBsaW0pICsKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAnZ3JleScpKQpnMSArIGcyICsgZzMKCmBgYAoKVGhlIDJEIG1hcmdpbmFsIGhpZ2hsaWdodHMgdHdvIGtleSBmZWF0dXJlczoKKiBUaGVyZSBpcyBhbiBvcHRpbWFsIHBLYTEgZm9yIGNhcHR1cmUgYXQgYXJvdW5kIDcuNS05LjUuIEJlbG93IHRoaXMgcG9pbnQsIGNhcHR1cmUgaXMgdmVyeSB1bmxpa2VseSwgYW5kIGFib3ZlIHRoaXMgcG9pbnQsIHRoZXJlIGlzIGxhcmdlIHZhcmlhbmNlLgoqIFRoZXJlIGlzIGFuIG9wdGltYWwgcmFuZ2UgZm9yIHRoZSBjb25jZW50cmF0aW9uIG9mIHF1aW5vbmUuIEludGVyZXN0aW5nbHksIHRoaXMgaXMgYSBkaXNjcmV0ZSBvcHRpbXVtIGFuZCBub3QgYSBtb25vdG9uaWMgaW5jcmVhc2UuIEl0IGlzIGxpa2VseSB0aGF0IGluY3JlYXNpbmcgdGhlIGFtb3VudCBvZiB2aWFibGUgTmFPSCB3b3VsZCBicm9hZGVuIHRoZSByYW5nZSwgYnV0IHRoZSBtYXhpbXVtIGNvbmNlbnRyYXRpb24gb2YgTmFPSCBpbiB0aGVzZSBjYWxjdWxhdGlvbnMgKDEwXjEuMiwgb3IgYWJvdXQgMTUgTSkgaXMgYWJvdmUgdGhlIHNvbHViaWxpdHkgbGltaXQgb2YgTmFPSC4KCmBgYHtyIE9wdGltYWwgQ2FwdHVyZSBNYXJnaW5hbHMgTmF0dXJhbCB2YXJpYWJsZXM6IDFEfQojIERlZmluZSB0aGUgY3V0b2ZmIHZhbHVlcwpFLmN1dG9mID0gbG9nMTAoNDApOyAja0ovbW9sIEMsIGxvZyB1bml0cwpGLmN1dG9mID0gMC4xKm1heChHUGFyLmFsbCRGbHV4Lm1vbC5tMnMpCgojIFNldCB1cCB0aGUgbWFyZ2luYWxpemF0aW9uCnJlc29sdXRpb24gPSA1MDsgTUNzYW1wID0gMjAwMApwa2ExLnJuZyA9IGMoMiwgMTMuNSk7IHBrYTIucm5nID0gYygwLCA1LjUpCmxvZ0Eucm5nID0gYygtMiwgMC41KTsgTmEuQS5ybmcgPSBjKC03LCAwLjcpCgojIFNldCB0aGUgcmFuZ2VzCnBvc3Qub3B0aW0gPSBkYXRhLmZyYW1lKHBrYTEgPSBzZXEoZnJvbSA9IHBrYTEucm5nWzFdLCB0byA9IHBrYTEucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBzZXEoZnJvbSA9IHBrYTIucm5nWzFdICsgcGthMS5ybmdbMV0sIHRvID0gcGthMi5ybmdbMl0gKyBwa2ExLnJuZ1syXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gc2VxKGZyb20gPSBsb2dBLnJuZ1sxXSwgdG8gPSBsb2dBLnJuZ1syXSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gc2VxKGZyb20gPSBOYS5BLnJuZ1sxXSArIGxvZ0Eucm5nWzFdLCB0byA9IE5hLkEucm5nWzJdICsgbG9nQS5ybmdbMl0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgcC5wa2ExID0gTmFOLCBwLnBrYTIgPSBOYU4sIHAubG9nQSA9IE5hTiwgcC5OYS5BID0gTmFOLCAjIFByb2JhYmlsaXR5IGFjY2VwdGFuY2UgbWVkaWFuCiAgICAgICAgICAgICAgICAgICAgICAgIHMucGthMSA9IE5hTiwgcy5wa2EyID0gTmFOLCBzLmxvZ0EgPSBOYU4sIHMuTmEuQSA9IE5hTiwgIyB2YXJpYW5jZSBmb3IgaW1wb3J0YW5jZSByYW5raW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGwucGthMSA9IE5hTiwgbC5wa2EyID0gTmFOLCBsLmxvZ0EgPSBOYU4sIGwuTmEuQSA9IE5hTiwgIyBsb3dlciBib3VuZAogICAgICAgICAgICAgICAgICAgICAgICBoLnBrYTEgPSBOYU4sIGgucGthMiA9IE5hTiwgaC5sb2dBID0gTmFOLCBoLk5hLkEgPSBOYU4pICMgdXBwZXIgYm91bmQKbG93ZXIgPSAwLjI1OyB1cHBlciA9IDAuNzUKCmZvcihpIGluIDE6cmVzb2x1dGlvbil7CiAgIyBwa2ExCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMSA9IHBvc3Qub3B0aW0kcGthMVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSArIHBvc3Qub3B0aW0kcGthMVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICBmaWxsLmZyYW1lJE5hLkEgPSBmaWxsLmZyYW1lJGxvZ0EgKyBmaWxsLmZyYW1lJE5hLkEKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICBwb3N0Lm9wdGltJHAucGthMVtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwb3N0Lm9wdGltJHMucGthMVtpXSA9IHNkKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgcG9zdC5vcHRpbSRoLnBrYTFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IHVwcGVyKQogIHBvc3Qub3B0aW0kbC5wa2ExW2ldID0gcXVhbnRpbGUoZmlsbC5mcmFtZSRwLmFjY2VwdCwgcHJvYnMgPSBsb3dlcikKCiAgIyBwa2EyCiAgIyBEZWZpbmUgdGhlIG1pbi9tYXgKICBwa2ExLnRlc3RybmcgPSBjKG1heChwa2ExLnJuZ1sxXSwgcG9zdC5vcHRpbSRwa2EyW2ldIC0gcGthMi5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgbWluKHBrYTEucm5nWzJdLCBwb3N0Lm9wdGltJHBrYTJbaV0gLSBwa2EyLnJuZ1sxXSkpCiAgCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUocGthMiA9IHBvc3Qub3B0aW0kcGthMltpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS50ZXN0cm5nWzFdLCBtYXggPSBwa2ExLnRlc3RybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBsb2dBLnJuZ1sxXSwgbWF4ID0gbG9nQS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIGZpbGwuZnJhbWUkTmEuQSA9IGZpbGwuZnJhbWUkbG9nQSArIGZpbGwuZnJhbWUkTmEuQQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHBvc3Qub3B0aW0kcC5wa2EyW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHBvc3Qub3B0aW0kcy5wa2EyW2ldID0gc2QoZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwb3N0Lm9wdGltJGgucGthMltpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAgcG9zdC5vcHRpbSRsLnBrYTJbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQogIAogICMgbG9nIFF1aW5vbmUKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShsb2dBID0gcG9zdC5vcHRpbSRsb2dBW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZ1sxXSwgbWF4ID0gcGthMS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZ1sxXSwgbWF4ID0gcGthMi5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIGZpbGwuZnJhbWUkcGthMiA9IGZpbGwuZnJhbWUkcGthMSArIGZpbGwuZnJhbWUkcGthMgogIGZpbGwuZnJhbWUkTmEuQSA9IGZpbGwuZnJhbWUkbG9nQSArIGZpbGwuZnJhbWUkTmEuQQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHBvc3Qub3B0aW0kcC5sb2dBW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHBvc3Qub3B0aW0kcy5sb2dBW2ldID0gc2QoZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwb3N0Lm9wdGltJGgubG9nQVtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAgcG9zdC5vcHRpbSRsLmxvZ0FbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQogIAogICMgTmEvQQogIGxvZ0EudGVzdHJuZyA9IGMobWF4KGxvZ0Eucm5nWzFdLCBwb3N0Lm9wdGltJE5hLkFbaV0gLSBOYS5BLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICBtaW4obG9nQS5ybmdbMl0sIHBvc3Qub3B0aW0kTmEuQVtpXSAtIE5hLkEucm5nWzFdKSkKCiAgZmlsbC5mcmFtZSA9IGRhdGEuZnJhbWUoTmEuQSA9IHBvc3Qub3B0aW0kTmEuQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmdbMV0sIG1heCA9IHBrYTEucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmdbMV0sIG1heCA9IHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS50ZXN0cm5nWzFdLCBtYXggPSBsb2dBLnRlc3RybmdbMl0pKQogIGZpbGwuZnJhbWUkcGthMiA9IGZpbGwuZnJhbWUkcGthMSArIGZpbGwuZnJhbWUkcGthMgogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHBvc3Qub3B0aW0kcC5OYS5BW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQogIHBvc3Qub3B0aW0kcy5OYS5BW2ldID0gc2QoZmlsbC5mcmFtZSRwLmFjY2VwdCkKICBwb3N0Lm9wdGltJGguTmEuQVtpXSA9IHF1YW50aWxlKGZpbGwuZnJhbWUkcC5hY2NlcHQsIHByb2JzID0gdXBwZXIpCiAgcG9zdC5vcHRpbSRsLk5hLkFbaV0gPSBxdWFudGlsZShmaWxsLmZyYW1lJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQp9CgoKYGBgCgoKYGBge3IgT3B0aW1hbCBDYXB0dXJlIE1hcmdpbmFscyBOYXR1cmFsIHZhcmlhYmxlczogMUQgUGxvdHN9CiMgRnVuY3Rpb24gdmFyaWFibGVzCmcxID0gZ2dwbG90KHBvc3Qub3B0aW0pICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IHAucGthMSkpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgeSA9IGgucGthMSksIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBwa2ExLCB5ID0gbC5wa2ExKSwgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gJ3BrYTEnLCB5ID0gJ1BbT3B0aW1hbF0nKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgY2VpbGluZyhtYXgocG9zdC5vcHRpbSRoLnBrYTEpKjEwKS8xMCkgKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMobWluKHBvc3Qub3B0aW0kcGthMSksIG1heChwb3N0Lm9wdGltJHBrYTIpKSkKZzIgPSBnZ3Bsb3QocG9zdC5vcHRpbSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBwa2EyLCB5ID0gcC5wa2EyKSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBwa2EyLCB5ID0gaC5wa2EyKSwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IHBrYTIsIHkgPSBsLnBrYTIpLCBsaW5ldHlwZSA9IDIpICsKICBsYWJzKHggPSAncGthMicsIHkgPSAnUFtPcHRpbWFsXScpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCBjZWlsaW5nKG1heChwb3N0Lm9wdGltJGgucGthMikqMTApLzEwKSApICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYyhtaW4ocG9zdC5vcHRpbSRwa2ExKSwgbWF4KHBvc3Qub3B0aW0kcGthMikpKQooZzEgLyBnMikKCmczID0gZ2dwbG90KHBvc3Qub3B0aW0pICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IHAubG9nQSkpICsKICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gMTBebG9nQSwgeSA9IGgubG9nQSksIGxpbmV0eXBlID0gMikgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gbC5sb2dBKSwgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gJ1tRdWlub25lXScsIHkgPSAnUFtPcHRpbWFsXScpICsKICBzY2FsZV94X2xvZzEwKCkgKwogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIGNlaWxpbmcobWF4KHBvc3Qub3B0aW0kaC5sb2dBKSoxMCkvMTApICkKZzQgPSBnZ3Bsb3QocG9zdC5vcHRpbSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gcC5OYS5BKSkgKwogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSAxMF5OYS5BLCB5ID0gaC5OYS5BKSwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IDEwXk5hLkEsIHkgPSBsLk5hLkEpLCBsaW5ldHlwZSA9IDIpICsKICBsYWJzKHggPSAnW0FkZGl0aW9uYWwgQmFzZV0nLCB5ID0gJ1BbT3B0aW1hbF0nKSArCiAgc2NhbGVfeF9sb2cxMCgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCBjZWlsaW5nKG1heChwb3N0Lm9wdGltJGguTmEuQSkqMTApLzEwKSApCihnMyAvIGc0KQoKYGBgCgoqIFRoZSAxRCBtYXJnaW5hbHMgY29uZmlybSB0aGUgb3B0aW11bSBpbiBwS2ExIHRoYXQgd2FzIG9ic2VydmVkIGluIHRoZSAyRCBtYXJnaW5hbGl6YXRpb24sIGJ1dCBpdCBhbHNvIGVtcGhhc2l6ZXMgdGhlIGltcGFjdCBvZiBwS2EyIHRoYXQgd2FzIG9ic2N1cmVkIGluIHRoZSAyRCBtYXJnaW5hbCAodmFsdWVzIGJlbG93IH43LjUgYXJlIGludmlhYmxlLCBwZWFrIG5lYXIgMTAuNSkuCiogVGhlIGNvbmNlbnRyYXRpb24gbWFyZ2luYWxzIHJlaW5mb3JjZSB0aGUgcHJpb3Igb2JzZXJ2YXRpb25zIHdpdGggdGhlIDJEIG1hcmdpbmFsLCB3aXRoIGEgcGVhayBpbiB0aGUgcXVpbm9uZSBjb25jZW50cmF0aW9uIGF0IGFyb3VuZCAxMDAgbU0gYW5kIG5vIGNsZWFyIG9wdGltYWwgYW1vdW50IG9mIE5hT0guCgpGb3IgdGhlIGltcG9ydGFuY2UgcmFua2luZywgdGhlIG1vc3QgaW1wb3J0YW5jZSBoYXMgdGhlIGxvd2VzdCB0b3RhbCB2YXJpYW5jZSwgbm9ybWFsaXplZCBieSB0aGUgcmFuZ2Ugb2YgdGhlIG1lYW4gcHJvYmFiaWxpdGllcyAoaS5lLiBoaWdoIHZhcmlhbmNlIHdpdGggbG93IG1lYW5zIHdpbGwgYmUgbGVhc3QgaW1wb3J0YW50KS4KCmBgYHtyIE5hdHVyYWwgVmFyaWFibGVzOiBJbXBvcnRhbmNlIFJhbmtpbmd9CmltcG9ydCA9IGRhdGEuZnJhbWUocmFuayA9IGMoZGlmZihyYW5nZShwb3N0Lm9wdGltJHAucGthMSkpL3N1bShwb3N0Lm9wdGltJHMucGthMSksCiAgZGlmZihyYW5nZShwb3N0Lm9wdGltJHAucGthMikpL3N1bShwb3N0Lm9wdGltJHMucGthMiksCiAgZGlmZihyYW5nZShwb3N0Lm9wdGltJHAubG9nQSkpL3N1bShwb3N0Lm9wdGltJHMubG9nQSksCiAgZGlmZihyYW5nZShwb3N0Lm9wdGltJHAuTmEuQSkpL3N1bShwb3N0Lm9wdGltJHMuTmEuQSkpLAogIHZhciA9IGMoJ3BrYTEnLCAncGthMicsICdsb2dBJywgJ05hLkEnKSkKCmdncGxvdChpbXBvcnRbb3JkZXIoaW1wb3J0JHJhbmssIGRlY3JlYXNpbmcgPSBUUlVFKSxdKSArCiAgZ2VvbV9jb2wobWFwcGluZyA9IGFlcyh4ID0gMTo0LCB5ID0gcmFuay9tYXgocmFuayksIGZpbGwgPSB2YXIpKSArCiAgbGFicyh4ID0gJycsIHkgPSAnJywgY29sb3IgPSAnJywgc3VidGl0bGUgPSAnRmVhdHVyZSBJbXBvcnRhbmNlJykgKwogIHNjYWxlX2ZpbGxfZGlzY3JldGUobGFiZWxzID0gYygncGthMScgPSBleHByZXNzaW9uKCdwJyppdGFsaWMoSylbJ2EsMSddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwa2EyJyA9IGV4cHJlc3Npb24oJ3AnKml0YWxpYyhLKVsnYSwyJ10pLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dBJyA9ICd7UXVpbm9uZX0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05hLkEnID0gJ3tOYU9IfScpLAogICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gaW1wb3J0JHZhcltvcmRlcihpbXBvcnQkcmFuaywgZGVjcmVhc2luZyA9IFRSVUUpXSwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnJykgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLCAuMSkpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCdMZWFzdCcsICdNb3N0JyksIG5hbWUgPSAnSW1wb3J0YW5jZScpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC45LCAwLjgpKQoKYGBgCgpJbXBvcnRhbmNlIHJhbmtpbmcgc3VnZ2VzdHMgdGhhdCB0aGUgcXVpbm9uZSBjaGFyYWN0ZXJpc3RpY3MgKHBLYXMgYW5kLCB0byBhIGxlc3NlciBleHRlbnQsIHRoZSBzb2x1YmlsaXR5IGxpbWl0KSBhcmUgbW9yZSBpbXBvcnRhbnQgdGhhbiB0aGUgb3BlcmF0aW5nIGNvbmRpdGlvbiBkZWNpc2lvbnMgKGNvbmNlbnRyYXRpb25zIG9mIHF1aW5vbmUgYW5kIE5hT0gpLgoKIyBTdWItcmVnaW9ucyBvZiBpbnRlcmVzdAoKQXBwbHlpbmcgdGhlIHJlZmluZW1lbnQgcHJvY2VzcyB0byBmdXJ0aGVyIHJlZmluZSBpbmZvcm1hdGlvbiBhYm91dCBoaWdoIGZsdXhlcyBhbmQgbG93IGVuZXJneSByZWdpb25zIGluZGVwZW5kZW50bHkuCgpUaGUgaGlnaCBmbHV4IHJlZ2lvbiBpcyBmbHV4ZXMgYWJvdmUgMC4yMiBtbW9sL21eMipzLCB3aGlsZSB0aGUgbG93IGVuZXJneSByZWdpb24gaXMgYmVsb3cgMTUga0ovbW9sOgoKYGBge3IgUmVmaW5lbWVudCBTdWJyZWdpb25zfQpHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl85MENhcE9wdF9kYXRhLmNzdicpCkdQYXIuZnJvbnQgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfZm50X2RhdGFfOTBDYXBPcHQuY3N2JykKCnJlZ2lvbi5mbHV4ID0gZGF0YS5mcmFtZShmbHV4Lm1heCA9IG1heChHUGFyLmZyb250JEZsdXgubW9sLm0ycyksIGZsdXgubWluID0gMC4yMmUtMywKICAgICAgICAgICAgICAgICAgICAgZW5lci5tYXggPSA0MCwgZW5lci5taW4gPSBtaW4oR1Bhci5mcm9udCRFbmVyZ3kua0oubW9sKQogICAgICAgICAgICAgICAgICAgICApCgpyZWdpb24uZW5lciA9IGRhdGEuZnJhbWUoZmx1eC5tYXggPSBtYXgoR1Bhci5mcm9udCRGbHV4Lm1vbC5tMnMpLCBmbHV4Lm1pbiA9IDAuMSptYXgoR1Bhci5mcm9udCRGbHV4Lm1vbC5tMnMpLAogICAgICAgICAgICAgICAgICAgICBlbmVyLm1heCA9IDE1LCBlbmVyLm1pbiA9IG1pbihHUGFyLmZyb250JEVuZXJneS5rSi5tb2wpCiAgICAgICAgICAgICAgICAgICAgICkKCmdncGxvdCgpICsKICAjIEJvdW5kcwogIGdlb21fcmVjdChyZWdpb24uZmx1eCwgbWFwcGluZyA9IGFlcyh4bWF4ID0gZmx1eC5tYXgsIHhtaW4gPSBmbHV4Lm1pbiwgeW1heCA9IGVuZXIubWF4LCB5bWluID0gZW5lci5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJ2ZsdXgnKSwKICAgICAgICAgICAgZmlsbCA9ICdncmVlbicsIGxpbmV0eXBlID0gMSwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3JlY3QocmVnaW9uLmVuZXIsIG1hcHBpbmcgPSBhZXMoeG1heCA9IGZsdXgubWF4LCB4bWluID0gZmx1eC5taW4sIHltYXggPSBlbmVyLm1heCwgeW1pbiA9IGVuZXIubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICdlbmVyJyksCiAgICAgICAgICAgIGZpbGwgPSAnYmx1ZScsIGxpbmV0eXBlID0gMSwgYWxwaGEgPSAwLjUpICsKICAjIERhdGEKICBnZW9tX3BvaW50KGRhdGEgPSBmaWx0ZXIoR1Bhci5hbGwsIEZsdXgubW9sLm0ycyA+IDAsIEVuZXJneS5rSi5tb2wgPCAxMDApLCAKICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wpKSArCiAgZ2VvbV9wb2ludChkYXRhID0gR1Bhci5mcm9udCwgbWFwcGluZyA9IGFlcyh4ID0gRmx1eC5tb2wubTJzLCB5ID0gRW5lcmd5LmtKLm1vbCwgY29sb3IgPSAncGFyZXRvJykpICsKICBnZW9tX2xpbmUoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wsIGNvbG9yID0gJ3BhcmV0bycpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoJ3BhcmV0bycgPSAncmVkJywgJ2ZsdXgnID0gJ2dyZWVuJywgJ2VuZXInID0gJ2JsdWUnKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygncGFyZXRvJyA9ICdQYXJldG8gRnJvbnQnLCAnZmx1eCcgPSAnSGlnaCBGbHV4JywgJ2VuZXInID0gJ0xvdyBFbmVyZ3knKSwKICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICcnKSArCiAgZ3VpZGVzKGNvbG91ciA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNoYXBlID0gMTUsIHNpemUgPSAyLCBhbHBoYSA9IGMoMC41LCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gTkEsIGxpbmV0eXBlID0gYygwLCAwLCAwKSkpKSArCiAgbGFicyh4ID0gJ0NPMiBGbHV4IChtb2wvbTIvcyknLCB5ID0gJ0VuZXJneSAoa0ovbW9sIEMpJywgc3VidGl0bGUgPSAnU3VicmVnaW9ucyBmb3IgcmVmaW5lbWVudCcpCgoKYGBgCgpUaGVzZSByZWdpb25zIGFyZSByZWxhdGl2ZWx5IHNtYWxsIGFuZCBwb29ybHkgcG9wdWxhdGVkLCBzbyBmdXJ0aGVyIHJlZmluZW1lbnQgd2lsbCBiZSB1c2VmdWwuClNpbmNlIHRoZSBpbnRlcmVzdCBpcyBpbiBsb3dlciBlbmVyZ3kgZGVtYW5kcyBhbmQgaGlnaGVyIGZsdXhlcywgb25seSB0aGUgbWluaW11bSBmbHV4IGFuZCBtYXhpbXVtIGVuZXJneSBib3VuZGFyaWVzIHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVmaW5lbWVudCBwcm9jZXNzLgpUaGUgdHdvIHJlZmluZW1lbnQgcHJvY2Vzc2VzIHdpbGwgYmUgY29uZHVjdGVkICJzaW11bHRhbmVvdXNseSIgaW4gdGhhdCB0aGV5IHdpbGwgYmUgcGVyZm9ybWVkIG9uIHRoZSBzYW1lIGluaXRpYWwgZGF0YXNldCB0byBmaW5lIG9uZSBwb2ludCBlYWNoLCB0aGVuIHRoZSBuZXh0IHBvaW50cyBmb3IgZWFjaCBwcm9jZXNzIGFkZGVkIHRvZ2V0aGVyIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KCkZvciB0aGUgaXRlcmF0aW9uIGZpdG5lc3Mgc3RvcCBjcml0ZXJpYSwgdXNlIHRoZSBtYXhpbXVtIGZpdG5lc3MgYW1vbmcgdGhlIHR3byBuZXcgcG9pbnRzLgoKYGBge3IgU3ViLXJlZ2lvbiBDYXB0dXJlIFJlZmluZW1lbnQ6IEZ1bmN0aW9uc30KIyBIaWdoIGZsdXggY29uZGl0aW9uCmZpbGwuc2FtcGxlLnN1Yi5mbHV4ID0gZnVuY3Rpb24oeCwgbW9kZWwuZmx1eCwgbW9kZWwuZW5lcil7CiAgIyBFdmFsdWF0ZSB0aGUgS3JpZ2luZyBtb2RlbCBmdW5jdGlvbiBhdCB4IAogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2RlbC5mbHV4LCAKICAgICAgICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGRhdGEuZnJhbWUocGthMSA9IHhbMV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0geFsyXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSB4WzNdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHhbNF0pLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kZWwuZW5lciwgCiAgICAgICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBkYXRhLmZyYW1lKHBrYTEgPSB4WzFdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHhbMl0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0geFszXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSB4WzRdKSwgdHlwZSA9ICdVSycpCgogICMgUHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIGZpdHMgYSBHYXVzc2lhbiBkaXN0cmlidXRpb24uCiAgIyBXYW50IHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBlbmVyZ3kgaXMgYmVsb3cgNDAga0ovbW9sIEMsIAogICMgZmx1eCBpcyBmYXN0ZXIgdGhhbiAxMCUgb2YgdGhlIG1heGltdW0gKHdoaWNoIHN0aWxsIG1lZXRzIHRoZSBlbmVyZ3kgY3JpdGVyaWEpCiAgRS5jdXRvZiA9IGxvZzEwKDQwKTsgI2tKL21vbCBDLCBsb2cgc2NhbGUgdG8gYWNjb3VudCBmb3IgbXVsdGlwbGUgb3JkZXIgb2YgbWFnbml0dWRlIHNwYW4KICBGLmN1dG9mID0gMC4yMmUtMyAjIG1vbC9tMnMsIGZsdXggYXQgd2hpY2ggdGhlcmUgaXMgYSBjb25jYXZpdHkgaW4gdGhlIFBhcmV0byBmcm9udAoKICBwcm9iID0gYygxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkgKgogICAgICAgICAgICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICAgICAgICAgICApCiAgCiAgIyBWYXJpYW5jZSBiYXNlZCBvbiBwcm9wYWdhdGlvbiBvZiBlcnJvcnMsIGFzc3VtaW5nIGluZGVwZW5kZW50IG1lYXN1cmVzLgogICMgU2luY2UgdGhlIG9wdGltaXphdGlvbiBsb29rcyBmb3IgcmVsYXRpdmUgZGlmZmVyZW5jZXMsIHRoZSBzcXVhcmUgcm9vdCBpcyBub3QgbmVjZXNzYXJ5CiAgc2QgPSAocmVzLmZsdXgkc2ReMiAqIHJlcy5lbmVyJG1lYW5eMiArIHJlcy5lbmVyJHNkXjIgKiByZXMuZmx1eCRtZWFuXjIpCgogICMgQWNxdWlzaXRpb24gZnVuY3Rpb24gcmVzdWx0LiBXZWlnaHQgdGhlIHByb2JhYmlsaXR5IHNsaWdodGx5IHN1Y2ggdGhhdCB0aGUgbWF4aW11bSBpcyAKICAjIDIgb3JkZXJzIG9mIG1hZ25pdHVkZSBoaWdoZXIgdGhhbiB0aGUgbWluaW11bSAoYW5kIHRoZSBtaW5pbXVtIGlzIG5vdCB6ZXJvKQogICMgR2l2ZW4gdGhlIG51bWJlciBvZiBwb2ludHMgYWxyZWFkeSBjb2xsZWN0ZWQsIGZhdm9yIGV4cGxvaXRhdGlvbiBvdmVyIGV4cGxvcmF0aW9uLgogIHJldHVybihzZCoocHJvYiooMS1wcm9iKSArIDAuMjUvOTkpKQp9CgojIEhpZ2ggZmx1eCBjb25kaXRpb24KZmlsbC5zYW1wbGUuc3ViLmVuZXIgPSBmdW5jdGlvbih4LCBtb2RlbC5mbHV4LCBtb2RlbC5lbmVyKXsKICAjIEV2YWx1YXRlIHRoZSBLcmlnaW5nIG1vZGVsIGZ1bmN0aW9uIGF0IHggCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZGVsLmZsdXgsIAogICAgICAgICAgICAgICAgICAgICBuZXdkYXRhID0gZGF0YS5mcmFtZShwa2ExID0geFsxXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSB4WzJdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHhbM10sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0geFs0XSksIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2RlbC5lbmVyLCAKICAgICAgICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGRhdGEuZnJhbWUocGthMSA9IHhbMV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0geFsyXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSB4WzNdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHhbNF0pLCB0eXBlID0gJ1VLJykKCiAgIyBQcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gZml0cyBhIEdhdXNzaWFuIGRpc3RyaWJ1dGlvbi4KICAjIFdhbnQgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhlIGVuZXJneSBpcyBiZWxvdyA0MCBrSi9tb2wgQywgCiAgIyBmbHV4IGlzIGZhc3RlciB0aGFuIDEwJSBvZiB0aGUgbWF4aW11bSAod2hpY2ggc3RpbGwgbWVldHMgdGhlIGVuZXJneSBjcml0ZXJpYSkKICBFLmN1dG9mID0gbG9nMTAoMTUpOyAjIGFwcHJveGltYXRlbHkgaGFsZndheSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGVuZXJneSBhbmQgdGhlIHRvcCBvZiB0aGUgY29uY2F2aXR5IGluIHRoZSBQYXJldG8gZnJvbnQKICBGLmN1dG9mID0gMC4xKm1heChHUGFyLmZyb250JEZsdXgubW9sLm0ycykKCiAgcHJvYiA9IGMoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpICoKICAgICAgICAgICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgICAgICAgICAgKQogIAogICMgVmFyaWFuY2UgYmFzZWQgb24gcHJvcGFnYXRpb24gb2YgZXJyb3JzLCBhc3N1bWluZyBpbmRlcGVuZGVudCBtZWFzdXJlcy4KICAjIFNpbmNlIHRoZSBvcHRpbWl6YXRpb24gbG9va3MgZm9yIHJlbGF0aXZlIGRpZmZlcmVuY2VzLCB0aGUgc3F1YXJlIHJvb3QgaXMgbm90IG5lY2Vzc2FyeQogIHNkID0gKHJlcy5mbHV4JHNkXjIgKiByZXMuZW5lciRtZWFuXjIgKyByZXMuZW5lciRzZF4yICogcmVzLmZsdXgkbWVhbl4yKQoKICAjIEFjcXVpc2l0aW9uIGZ1bmN0aW9uIHJlc3VsdC4gV2VpZ2h0IHRoZSBwcm9iYWJpbGl0eSBzbGlnaHRseSBzdWNoIHRoYXQgdGhlIG1heGltdW0gaXMgCiAgIyAyIG9yZGVycyBvZiBtYWduaXR1ZGUgaGlnaGVyIHRoYW4gdGhlIG1pbmltdW0gKGFuZCB0aGUgbWluaW11bSBpcyBub3QgemVybykKICAjIEdpdmVuIHRoZSBudW1iZXIgb2YgcG9pbnRzIGFscmVhZHkgY29sbGVjdGVkLCBmYXZvciBleHBsb2l0YXRpb24gb3ZlciBleHBsb3JhdGlvbi4KICByZXR1cm4oc2QqKHByb2IqKDEtcHJvYikgKyAwLjI1Lzk5KSkKfQoKIyBOZXh0IHBvaW50IHNlYXJjaCBmdW5jdGlvbgpmaWxsLnNhbXBsZS5zdWIgPSBmdW5jdGlvbihHUGFyLmRhdGEpewogICMgTW9kZWxzCiAgbW9kLmZsdXggPSBmaWxsLnNhbXBsZS5tb2QoR1Bhci5kYXRhID0gR1Bhci5kYXRhLCBpbnB1dC5uYW1lID0gYygncGthMScsICdwa2EyJywgJ2xvZ0EnLCAnTmEuQScpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQubmFtZSA9ICdGbHV4Lm1vbC5tMnMnKQogICMgRW5lcmd5IG1vZGVsIGhhcyBzdWJzdGFudGlhbCBvdXRsaWVycyBhYm92ZSAxZTMga0ovbW9sIHRoYXQgc2tldyB0aGUgbW9kZWw7IAogICMgYSBtb3JlIGFjY3VyYXRlIG1vZGVsIGlzIGZvdW5kIHdoZW4gcmVzdHJpY3RlZAogIG1vZC5lbmVyID0gZmlsbC5zYW1wbGUuZW5lcihHUGFyLmRhdGEgPSBHUGFyLmRhdGEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5uYW1lID0gYygncGthMScsICdwa2EyJywgJ2xvZ0EnLCAnTmEuQScpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm5hbWUgPSAnRW5lcmd5LmtKLm1vbCcpCgogICMgTmV4dCBwb2ludCBieSBnZW5ldGljIGFsZ29yaXRobTogTWF4IGZsdXggcmVnaW9uCiAgR0EucHJlZCA9IGdhKHR5cGUgPSAncmVhbC12YWx1ZWQnLAogICAgICAgICAgICAgICBmaXRuZXNzID0gZnVuY3Rpb24oeCl7ZmlsbC5zYW1wbGUuc3ViLmZsdXgoeCwgbW9kZWwuZmx1eCA9IG1vZC5mbHV4LCBtb2RlbC5lbmVyID0gbW9kLmVuZXIpfSwKICAgICAgICAgICAgICAgbG93ZXIgPSBjKDIsIDAsIC0yLCAtNyksIHVwcGVyID0gYygxMy41LCA1LjUsIDAuNSwgMC43KSwKICAgICAgICAgICAgICAgcG9wU2l6ZSA9IDUwLCBtYXhpdGVyID0gNTAsIHJ1biA9IDEwLCBtb25pdG9yID0gRkFMU0UsCiAgICAgICAgICAgICAgIHBhcmFsbGVsID0gMikKICBwb2ludC5uZXh0ID0gR0EucHJlZEBzb2x1dGlvblsxLF0KICBHUGFyLmZsdXggPSBkYXRhLmZyYW1lKHBrYTEgPSBwb2ludC5uZXh0WzFdLAogICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcG9pbnQubmV4dFsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHBvaW50Lm5leHRbM10sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBwb2ludC5uZXh0WzRdKQogIAogICMgVHJ1ZSByZXN1bHQgZm9yIGJvdGggdGhlIGVuZXJneSBhbmQga2luZXRpY3MgdG8gYWRkIHRoaXMgdG8gdGhlIGRhdGFzZXQKICByZXMgPSBQQ0VULm9iai5mbHUoaW5wdXRzID0gcG9pbnQubmV4dCkKICBHUGFyLmZsdXgkRW5lcmd5LmtKLm1vbCA9IHJlc1sxXQogIEdQYXIuZmx1eCRGbHV4Lm1vbC5tMnMgID0gLXJlc1syXSAjIEZsaXAgc2lnbiBiZWNhdXNlIG9wdGltaXphdGlvbiBmdW5jdGlvbiBtaW5pbWl6ZXMKICBHUGFyLmZsdXgkb3JkZXIgPSBtYXgoR1Bhci5kYXRhJG9yZGVyKSArIDEKCiAgIyBBbHNvIGFkZCB0aGUgZml0bmVzcyB0byB0aGUgZGF0YWZyYW1lIGZvciBpdGVyYXRpb24gY3V0b2ZmcwogIEdQYXIuZmx1eCRmaXQgPSBtYXgoR0EucHJlZEBmaXRuZXNzKQogIAogICMgTmV4dCBwb2ludCBieSBnZW5ldGljIGFsZ29yaXRobTogTWluIGVuZXJneSByZWdpb24KICBHQS5wcmVkID0gZ2EodHlwZSA9ICdyZWFsLXZhbHVlZCcsCiAgICAgICAgICAgICAgIGZpdG5lc3MgPSBmdW5jdGlvbih4KXtmaWxsLnNhbXBsZS5zdWIuZW5lcih4LCBtb2RlbC5mbHV4ID0gbW9kLmZsdXgsIG1vZGVsLmVuZXIgPSBtb2QuZW5lcil9LAogICAgICAgICAgICAgICBsb3dlciA9IGMoMiwgMCwgLTIsIC03KSwgdXBwZXIgPSBjKDEzLjUsIDUuNSwgMC41LCAwLjcpLAogICAgICAgICAgICAgICBwb3BTaXplID0gNTAsIG1heGl0ZXIgPSA1MCwgcnVuID0gMTAsIG1vbml0b3IgPSBGQUxTRSwKICAgICAgICAgICAgICAgcGFyYWxsZWwgPSAyKQogIHBvaW50Lm5leHQgPSBHQS5wcmVkQHNvbHV0aW9uWzEsXQogIEdQYXIuZW5lciA9IGRhdGEuZnJhbWUocGthMSA9IHBvaW50Lm5leHRbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBwb2ludC5uZXh0WzJdLAogICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcG9pbnQubmV4dFszXSwKICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHBvaW50Lm5leHRbNF0pCiAgCiAgIyBUcnVlIHJlc3VsdCBmb3IgYm90aCB0aGUgZW5lcmd5IGFuZCBraW5ldGljcyB0byBhZGQgdGhpcyB0byB0aGUgZGF0YXNldAogIHJlcyA9IFBDRVQub2JqLmZsdShpbnB1dHMgPSBwb2ludC5uZXh0KQogIEdQYXIuZW5lciRFbmVyZ3kua0oubW9sID0gcmVzWzFdCiAgR1Bhci5lbmVyJEZsdXgubW9sLm0ycyAgPSAtcmVzWzJdICMgRmxpcCBzaWduIGJlY2F1c2Ugb3B0aW1pemF0aW9uIGZ1bmN0aW9uIG1pbmltaXplcwogIEdQYXIuZW5lciRvcmRlciA9IG1heChHUGFyLmRhdGEkb3JkZXIpICsgMQoKICAjIEFsc28gYWRkIHRoZSBmaXRuZXNzIHRvIHRoZSBkYXRhZnJhbWUgZm9yIGl0ZXJhdGlvbiBjdXRvZmZzCiAgR1Bhci5lbmVyJGZpdCA9IG1heChHQS5wcmVkQGZpdG5lc3MpCiAgCiAgIyBSZXR1cm4gdGhlIG5ldyBwb2ludCBhbmQgdGhlIGZpdG5lc3MKICByZXR1cm4oR1Bhci5uZXcgPSByYmluZChHUGFyLmZsdXgsIEdQYXIuZW5lcikpCn0KCmBgYAoKQXBwbHlpbmcgdGhlIGZ1bmN0aW9ucyB3aXRoIGEgbG9vcGluZyBpdGVyYXRpdmUgc2VhcmNoCgpgYGB7ciBTdWItcmVnaW9uIENhcHR1cmUgUmVmaW5lbWVudDogUmVmaW5lbWVudCBJdGVyYXRpb25zfQojIExvYWQgZGF0YQpHUGFyLmFsbCA9IHJlYWQuY3N2KGZpbGUgPSAnR1Bhcl85MENhcE9wdF9kYXRhLmNzdicpCkdQYXIuZnJvbnQgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfZm50X2RhdGFfOTBDYXBPcHQuY3N2JykKIyBSZW1vdmUgaW5kaWNlcwpHUGFyLmFsbCA9IEdQYXIuYWxsWywgIShuYW1lcyhHUGFyLmFsbCkgJWluJSBjKCJYIikpXQpHUGFyLmZyb250ID0gR1Bhci5mcm9udFssICEobmFtZXMoR1Bhci5mcm9udCkgJWluJSBjKCJYIikpXQoKIyBGaXJzdCBpdGVyYXRpb24gdG8gc2V0IHRoZSBiYXNlbGluZSBvZiBob3cgbXVjaCBpbXByb3ZlbWVudCB0aGVyZSBpcyB0byBmaW5kLgpuZXdwb2ludCA9IGZpbGwuc2FtcGxlLm9wdChHUGFyLmRhdGEgPSBHUGFyLmFsbCkKc3RhcnQuZml0ID0gbWF4KG5ld3BvaW50JGZpdCk7IApjdXJyZW50LmZpdCA9IG1heChuZXdwb2ludCRmaXQpOyAKCiMgUmVwZWF0IGZvciBhIG1heGltdW0gb2YgMjAwIGl0ZXJhdGlvbnMsIG9yIHVudGlsIHRoZSBmaXRuZXNzIGRyb3BzIGJlbG93IDEvMTAwMCBvZiB0aGUgc3RhcnRpbmcgZml0bmVzcywgCiMgaW5kaWNhdGluZyBsaXR0bGUgZnVydGhlciBpbXByb3ZlbWVudAptYXguaXRlciA9IG1heChHUGFyLmFsbCRvcmRlcikgKyAxMDAKd2hpbGUobWF4KEdQYXIuYWxsJG9yZGVyKSA8IG1heC5pdGVyICYgY3VycmVudC5maXQqMWUzID4gc3RhcnQuZml0KXsKICBHUGFyLmFsbCA9IHJiaW5kKEdQYXIuYWxsLCBuZXdwb2ludFssbmFtZXMobmV3cG9pbnQpICVpbiUgbmFtZXMoR1Bhci5hbGwpXSkKICBuZXdwb2ludCA9IGZpbGwuc2FtcGxlLnN1YihHUGFyLmRhdGEgPSBHUGFyLmFsbCkKICBjdXJyZW50LmZpdCA9IG1heChuZXdwb2ludCRmaXQpCn0KCiMgU3RvcmUgdGhlIGRhdGEKd3JpdGUuY3N2KEdQYXIuYWxsLCBmaWxlID0gJ0dQYXJfU3ViUmVmX2RhdGEuY3N2JykKIyBVcGRhdGVkIFBhcmV0byBmcm9udAp0ZXN0ID0gYXMubWF0cml4KEdQYXIuYWxsW0dQYXIuYWxsJEZsdXgubW9sLm0ycyA+IDAsbmFtZXMoR1Bhci5hbGwpICVpbiUgYygnRW5lcmd5LmtKLm1vbCcsICdGbHV4Lm1vbC5tMnMnKV0pCiMgRm9yIHRoZSBQYXJldG8gZnJvbnQgZGV0ZXJtaW5hdGlvbiwgbmVlZCBib3RoIHRvIG1pbmltaXplCnRlc3RbLDJdID0gLXRlc3RbLDJdCnBhci5mcm9udCA9IHQobm9uZG9taW5hdGVkX3BvaW50cyhwb2ludHMgPSB0KHRlc3QpKSkKcGFyLmZyb250WywyXSA9IC1wYXIuZnJvbnRbLDJdCiMgSWRlbnRpZnkgdGhlIGNvbmRpdGlvbnMgbGVhZGluZyB0byB0aGUgUGFyZXRvIGZyb250CkdQYXIuZnJvbnQgPSBmaWx0ZXIoR1Bhci5hbGwsIEVuZXJneS5rSi5tb2wgJWluJSBwYXIuZnJvbnRbLDFdLCBGbHV4Lm1vbC5tMnMgJWluJSBwYXIuZnJvbnRbLDJdKQpHUGFyLmZyb250ID0gR1Bhci5mcm9udFssIW5hbWVzKEdQYXIuZnJvbnQpICVpbiUgJ1gnXQp3cml0ZS5jc3YoR1Bhci5mcm9udCwgZmlsZSA9ICdHUGFyX2ZudF9kYXRhX1N1YlJlZi5jc3YnKQoKYGBgCgpgYGB7ciBTdWItcmVnaW9uIENhcHR1cmUgUmVmaW5lbWVudDogUGxvdHN9CkdQYXIuYWxsID0gcmVhZC5jc3YoZmlsZSA9ICdHUGFyX1N1YlJlZl9kYXRhLmNzdicpCkdQYXIuZnJvbnQgPSByZWFkLmNzdihmaWxlID0gJ0dQYXJfZm50X2RhdGFfU3ViUmVmLmNzdicpCgpyZWdpb24uZmx1eCA9IGRhdGEuZnJhbWUoZmx1eC5tYXggPSBtYXgoR1Bhci5mcm9udCRGbHV4Lm1vbC5tMnMpLCBmbHV4Lm1pbiA9IDAuMjJlLTMsCiAgICAgICAgICAgICAgICAgICAgIGVuZXIubWF4ID0gNDAsIGVuZXIubWluID0gbWluKEdQYXIuZnJvbnQkRW5lcmd5LmtKLm1vbCkKICAgICAgICAgICAgICAgICAgICAgKQoKcmVnaW9uLmVuZXIgPSBkYXRhLmZyYW1lKGZsdXgubWF4ID0gbWF4KEdQYXIuZnJvbnQkRmx1eC5tb2wubTJzKSwgZmx1eC5taW4gPSAwLjEqbWF4KEdQYXIuZnJvbnQkRmx1eC5tb2wubTJzKSwKICAgICAgICAgICAgICAgICAgICAgZW5lci5tYXggPSAxNSwgZW5lci5taW4gPSBtaW4oR1Bhci5mcm9udCRFbmVyZ3kua0oubW9sKQogICAgICAgICAgICAgICAgICAgICApCgpnZ3Bsb3QoKSArCiAgIyBCb3VuZHMKICBnZW9tX3JlY3QocmVnaW9uLmZsdXgsIG1hcHBpbmcgPSBhZXMoeG1heCA9IGZsdXgubWF4LCB4bWluID0gZmx1eC5taW4sIHltYXggPSBlbmVyLm1heCwgeW1pbiA9IGVuZXIubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICdmbHV4JyksCiAgICAgICAgICAgIGZpbGwgPSAnZ3JlZW4nLCBsaW5ldHlwZSA9IDEsIGFscGhhID0gMC41KSArCiAgZ2VvbV9yZWN0KHJlZ2lvbi5lbmVyLCBtYXBwaW5nID0gYWVzKHhtYXggPSBmbHV4Lm1heCwgeG1pbiA9IGZsdXgubWluLCB5bWF4ID0gZW5lci5tYXgsIHltaW4gPSBlbmVyLm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnZW5lcicpLAogICAgICAgICAgICBmaWxsID0gJ2JsdWUnLCBsaW5ldHlwZSA9IDEsIGFscGhhID0gMC41KSArCiAgIyBEYXRhCiAgZ2VvbV9wb2ludChkYXRhID0gZmlsdGVyKEdQYXIuYWxsLCBGbHV4Lm1vbC5tMnMgPiAwLCBFbmVyZ3kua0oubW9sIDwgMTAwKSwgCiAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBGbHV4Lm1vbC5tMnMsIHkgPSBFbmVyZ3kua0oubW9sKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IEdQYXIuZnJvbnQsIG1hcHBpbmcgPSBhZXMoeCA9IEZsdXgubW9sLm0ycywgeSA9IEVuZXJneS5rSi5tb2wsIGNvbG9yID0gJ3BhcmV0bycpKSArCiAgZ2VvbV9saW5lKGRhdGEgPSBHUGFyLmZyb250LCBtYXBwaW5nID0gYWVzKHggPSBGbHV4Lm1vbC5tMnMsIHkgPSBFbmVyZ3kua0oubW9sLCBjb2xvciA9ICdwYXJldG8nKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCdwYXJldG8nID0gJ3JlZCcsICdmbHV4JyA9ICdncmVlbicsICdlbmVyJyA9ICdibHVlJyksCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoJ3BhcmV0bycgPSAnUGFyZXRvIEZyb250JywgJ2ZsdXgnID0gJ0hpZ2ggRmx1eCcsICdlbmVyJyA9ICdMb3cgRW5lcmd5JyksCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnJykgKwogIGd1aWRlcyhjb2xvdXIgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaGFwZSA9IDE1LCBzaXplID0gMiwgYWxwaGEgPSBjKDAuNSwgMC41LCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IE5BLCBsaW5ldHlwZSA9IGMoMCwgMCwgMCkpKSkgKwogIGxhYnMoeCA9ICdDTzIgRmx1eCAobW9sL20yL3MpJywgeSA9ICdFbmVyZ3kgKGtKL21vbCBDKScsIHN1YnRpdGxlID0gJ1N1YnJlZ2lvbnMgZm9yIHJlZmluZW1lbnQnKQoKCmBgYAoKVGhpcyByZWZpbmVtZW50IGZpbGxlZCBpbiBhIG51bWJlciBvZiBkYXRhIHBvaW50cyBvdXRzaWRlIG9mIGFuZCBhcm91bmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIGhpZ2ggZmx1eCBhbmQgbG93IGVuZXJneSByZWdpb25zLCBhcyB3ZWxsIGFzIHdpdGhpbiB0aGUgZ2VuZXJhbGx5IGFjY2VwdGFibGUgcmVnaW1lIChsZXNzIHRoYW4gNDAga0ovbW9sIEMgYW5kIGdyZWF0ZXIgdGhhbiAxLzEwdGggb2YgdGhlIG1heGltdW0gZmx1eCkKCkZ1cnRoZXIgYW5hbHlzaXMgKGVnLiBzdWdnZXN0ZWQgcmFuZ2VzIGZvciB0aGUgdmFyaWFibGVzKSBvbiB0aGUgbWFyZ2luYWxzIHdpbGwgYmUgY29uZHVjdGVkIGFmdGVyIGNvbWJpbmluZyB0aGlzIGRhdGFzZXQgd2l0aCB0aGF0IG9mIGFkZGluZyBhY2lkIGluc3RlYWQgb2YgYWRkaW5nIGJhc2UuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgU3VnZ2VzdGVkIHJhbmdlcyBmb3IgcGVyZm9ybWFuY2UKCkZvciB0aGlzIGludmVzdGlnYXRpb24sIHRoZSBjb25jZXJuIGlzIGluIGRldGVybWluaW5nIHRoZSBvcHRpbWFsIGNvbmRpdGlvbnMgZm9yIHNlbGVjdGluZyB0aGUgY29ycmVjdCBxdWlub25lLCBzbyB0aGUgY29uY2VudHJhdGlvbiBvZiBOYU9IIGlzIG5vdCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQuClN1Z2dlc3Rpb25zIHdpbGwgc3RpbGwgYmUgbWFkZSwgYnV0IGl0IHdpbGwgYmUgYXNzZXNzZWQgbGFzdCAoY29udmVuaWVudGx5LCBpdCBpcyB0aGUgbGVhc3QgaW1wb3J0YW50IHZhcmlhYmxlIGluIHRoZSBpbXBvcnRhbmNlIHJhbmtpbmcpLgoKVGhlIHJhbmdlcyBhcmUgZGV0ZXJtaW5lZCBzZXF1ZW50aWFsbHkgaW4gb3JkZXIgb2YgbW9zdCBpbXBvcnRhbnQgdmFyaWFibGUgdG8gbGVhc3QgaW1wb3J0YW50LgpGb3IgdGhlIG1vc3QgaW1wb3J0YW50IHZhcmlhYmxlLCB0aGUgbW9zdCB2aWFibGUgY29uZGl0aW9uIGlzIHRoZSByYW5nZSB0aGF0IGdpdmVzIGl0IGEgcHJvYmFiaWxpdHkgb2YgbWVldGluZyB0aGUgYWNjZXB0YW5jZSBjcml0ZXJpYSB0aGF0IGlzIGhhbGZ3YXkgYmV0d2VlbiB0aGUgbWF4aW11bSBhbmQgbWluaW11bSAod2VhayByYW5nZSBzdWdnZXN0aW9uKSBhbmQgNzUlIG9mIHRoZSB3YXkgdXAgZnJvbSB0aGUgbWluaW11bSAoc3Ryb25nIHJhbmdlIHN1Z2dlc3Rpb24pLgpUaGUgbmV4dCBtb3N0IGltcG9ydGFudCB3aWxsIGhhdmUgaXRzIG1hcmdpbmFsIHJlLWFzc2Vzc2VkIGJ5IGFzc3VtaW5nIHRoYXQgdGhlIHByZXZpb3VzIG1vc3QgaW1wb3J0YW50IHZhcmlhYmxlcyBmYWxsIHdpdGhpbiB0aGUgb3B0aW1hbCByZWdpb24uCgpUaGUgbWFyZ2luYWwgZm9yIHRoZSBwS2ExIHdpbGwgYmUgcmUtY2FsY3VsYXRlZCB3aXRoIGZpbmVyIHJlc29sdXRpb24uCgojYGBge3IgT3B0aW1hbCBDYXB0dXJlIE1hcmdpbmFscyBOYXR1cmFsIHZhcmlhYmxlczogU3VnZ2VzdGVkIFJhbmdlIHBLYTF9CiMgRGVmaW5lIHRoZSBjdXRvZmYgdmFsdWVzCkUuY3V0b2YgPSBsb2cxMCg0MCk7ICNrSi9tb2wgQywgbG9nIHVuaXRzCkYuY3V0b2YgPSAwLjEqbWF4KEdQYXIuYWxsJEZsdXgubW9sLm0ycykKCiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24sIGhpZ2hlciByZXNvbHV0aW9uIHRoYW4gdGhlIHNpbmdsZSB2YXJpYWJsZSBtYXJnaW5hbHMgZm9yIHBsb3R0aW5nCnJlc29sdXRpb24gPSAxMDA7IE1Dc2FtcCA9IDIwMDAKcGthMS5ybmcgPSBjKDIsIDEzLjUpOyBwa2EyLnJuZyA9IGMoMCwgNS41KQpsb2dBLnJuZyA9IGMoLTIsIDAuNSk7IE5hLkEucm5nID0gYygtNywgMC43KQoKIyBPcHRpbWFsIHJhbmdlIGZvciBwS2ExCnJhbmdlLnBrYTEgPSBkYXRhLmZyYW1lKHBrYTEgPSBzZXEoZnJvbSA9IHBrYTEucm5nWzFdLCB0byA9IHBrYTEucm5nWzJdLCBsZW5ndGgub3V0ID0gcmVzb2x1dGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHAucGthMSA9IE5hTikKZm9yKGkgaW4gMTpyZXNvbHV0aW9uKXsKICAjIHBrYTEKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcmFuZ2UucGthMSRwa2ExW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZ1sxXSwgbWF4ID0gcGthMi5ybmdbMl0pICsgcmFuZ2UucGthMSRwa2ExW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBsb2dBLnJuZ1sxXSwgbWF4ID0gbG9nQS5ybmdbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogIGZpbGwuZnJhbWUkTmEuQSA9IGZpbGwuZnJhbWUkTmEuQSArIGZpbGwuZnJhbWUkbG9nQQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHJhbmdlLnBrYTEkcC5wa2ExW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQp9CgojIFBsb3QgdGhlIHJhbmdlIHRvIGRldGVybWluZSBob3cgdG8gZGVzY3JpYmUgdGhlIG9wdGltYWwgcmFuZ2UKZ2dwbG90KHJhbmdlLnBrYTEpICsKICBnZW9tX3BhdGgobWFwcGluZyA9IGFlcyh4ID0gcGthMSwgcC5wa2ExKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSpkaWZmKHJhbmdlKHJhbmdlLnBrYTEkcC5wa2ExKSkrbWluKHJhbmdlLnBrYTEkcC5wa2ExKSwgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC43NSpkaWZmKHJhbmdlKHJhbmdlLnBrYTEkcC5wa2ExKSkrbWluKHJhbmdlLnBrYTEkcC5wa2ExKSwgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspWydhLDEnXSksIHkgPSAnUFtPcHRpbWFsXScpCgojIFdlYWsgcmFuZ2U6IGJldHdlZW4gN34xMCBhbmQgYWJvdmUgMTIuIEhvd2V2ZXIsIHRoZSB0YWlsaW5nIGVmZmVjdCBvZiBiZWluZyBhYm92ZSAxMiBpcyBiYXJlbHkgb3ZlciB0aGUgY3V0b2ZmLCBzbyB3aWxsIGJlIG9taXR0ZWQgZm9yIHNpbXBsaWNpdHkuCnByaW50KCdGaXJzdCBwS2E6JykKcHJpbnQoJ1dlYWsgcmFuZ2U6JykKcHJpbnQoJ0JldHdlZW46JykKcHJpbnQocm91bmQocmFuZ2UoZmlsdGVyKHJhbmdlLnBrYTEsIHAucGthMSA+IDAuNSpkaWZmKHJhbmdlKHAucGthMSkpK21pbihwLnBrYTEpLCBwa2ExIDwgMTApJHBrYTEpLCAyKSkKIyBXZWFrIHJhbmdlOiBiZXR3ZWVuIDd+MTAKcHJpbnQoJ1N0cm9uZyByYW5nZTonKQpwcmludCgnQmV0d2VlbicpCnByaW50KHJvdW5kKHJhbmdlKGZpbHRlcihyYW5nZS5wa2ExLCBwLnBrYTEgPiAwLjc1KmRpZmYocmFuZ2UocC5wa2ExKSkrbWluKHAucGthMSkpJHBrYTEpLCAyKSkKCnBrYTEucm5nLndrID0gcmFuZ2UoZmlsdGVyKHJhbmdlLnBrYTEsIHAucGthMSA+IDAuNSpkaWZmKHJhbmdlKHAucGthMSkpK21pbihwLnBrYTEpLCBwa2ExIDwgMTApJHBrYTEpCnBrYTEucm5nLnN0ID0gcmFuZ2UoZmlsdGVyKHJhbmdlLnBrYTEsIHAucGthMSA+IDAuNzUqZGlmZihyYW5nZShwLnBrYTEpKSttaW4ocC5wa2ExKSkkcGthMSkKCmBgYAoKUmFuZ2UgZm9yIHRoZSAxc3QgcEthOgpXZWFrIHN1Z2dlc3Rpb246ICAgNy4yMyB+IDkuNTUKU3Ryb25nIHN1Z2dlc3Rpb246IDcuNTggfiA4Ljg1CgojYGBge3IgT3B0aW1hbCBDYXB0dXJlIE1hcmdpbmFscyBOYXR1cmFsIHZhcmlhYmxlczogU3VnZ2VzdGVkIFJhbmdlIHBLYTJ9CiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24sIGhpZ2hlciByZXNvbHV0aW9uIHRoYW4gdGhlIHNpbmdsZSB2YXJpYWJsZSBtYXJnaW5hbHMgZm9yIHBsb3R0aW5nCnJlc29sdXRpb24gPSAxMDA7IE1Dc2FtcCA9IDIwMDAKcGthMi5ybmcgPSBjKDAsIDUuNSk7IGxvZ0Eucm5nID0gYygtMiwgMC41KTsgTmEuQS5ybmcgPSBjKC03LCAwLjcpCgojIER1ZSB0byB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gcEthMSBhbmQgcEthMiwgdGhlIHJhbmdlIG9mIHBLYTIgaXMgYWxyZWFkeSBwYXJ0aWFsbHkgcmVzdHJpY3RlZC4KcmFuZ2UucGthMi5zdCA9IGRhdGEuZnJhbWUocGthMiA9IHNlcShmcm9tID0gbWluKHBrYTEucm5nLnN0KSArIHBrYTIucm5nWzFdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byA9IG1heChwa2ExLnJuZy5zdCkgKyBwa2EyLnJuZ1syXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBrYTIgPSBOYU4pCnJhbmdlLnBrYTIud2sgPSBkYXRhLmZyYW1lKHBrYTIgPSBzZXEoZnJvbSA9IG1pbihwa2ExLnJuZy53aykgKyBwa2EyLnJuZ1sxXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPSBtYXgocGthMS5ybmcud2spICsgcGthMi5ybmdbMl0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aC5vdXQgPSByZXNvbHV0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wa2EyID0gTmFOKQoKZm9yKGkgaW4gMTpyZXNvbHV0aW9uKXsKICAjIFN0cm9uZyBzdWdnZXN0aW9uCiAgcGthMS50ZXN0cm5nID0gYyhtYXgocGthMS5ybmcuc3RbMV0sIHJhbmdlLnBrYTIuc3QkcGthMltpXSAtIHBrYTIucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgIG1pbihwa2ExLnJuZy5zdFsyXSwgcmFuZ2UucGthMi5zdCRwa2EyW2ldIC0gcGthMi5ybmdbMV0pKQogIAogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKHBrYTIgPSByYW5nZS5wa2EyLnN0JHBrYTJbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTEudGVzdHJuZ1sxXSwgbWF4ID0gcGthMS50ZXN0cm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICBmaWxsLmZyYW1lJE5hLkEgPSBmaWxsLmZyYW1lJE5hLkEgKyBmaWxsLmZyYW1lJGxvZ0EKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICByYW5nZS5wa2EyLnN0JHAucGthMltpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICAKICAjIFdlYWsgc3VnZ2VzdGlvbgogIHBrYTEudGVzdHJuZyA9IGMobWF4KHBrYTEucm5nLndrWzFdLCByYW5nZS5wa2EyLndrJHBrYTJbaV0gLSBwa2EyLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICBtaW4ocGthMS5ybmcud2tbMl0sIHJhbmdlLnBrYTIud2skcGthMltpXSAtIHBrYTIucm5nWzFdKSkKICAKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2EyID0gcmFuZ2UucGthMi53ayRwa2EyW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnRlc3RybmdbMV0sIG1heCA9IHBrYTEudGVzdHJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IGxvZ0Eucm5nWzFdLCBtYXggPSBsb2dBLnJuZ1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IE5hLkEucm5nWzFdLCBtYXggPSBOYS5BLnJuZ1syXSkpCiAgZmlsbC5mcmFtZSROYS5BID0gZmlsbC5mcmFtZSROYS5BICsgZmlsbC5mcmFtZSRsb2dBCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5lbmVyLCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9ICgxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkpICoKICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgcmFuZ2UucGthMi53ayRwLnBrYTJbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCn0KCiMgUGxvdCB0aGUgcHJvYmFiaWxpdGllcyB0byBkZXRlcm1pbmUgaG93IHRvIGRlc2NyaWJlIHRoZSBvcHRpbWFsIHJhbmdlCmdncGxvdCgpICsKICBnZW9tX3BhdGgoZGF0YSA9IHJhbmdlLnBrYTIud2ssIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTIsIHkgPSBwLnBrYTIsIGNvbG9yID0gJ3dlYWsnKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSpkaWZmKHJhbmdlKHJhbmdlLnBrYTIud2skcC5wa2EyKSkrbWluKHJhbmdlLnBrYTIud2skcC5wa2EyKSwgCiAgICAgICAgICAgICBjb2xvciA9ICdyZWQnLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX3BhdGgoZGF0YSA9IHJhbmdlLnBrYTIuc3QsIG1hcHBpbmcgPSBhZXMoeCA9IHBrYTIsIHkgPSBwLnBrYTIsIGNvbG9yID0gJ3N0cm9uZycpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC43NSpkaWZmKHJhbmdlKHJhbmdlLnBrYTIuc3QkcC5wa2EyKSkrbWluKHJhbmdlLnBrYTIuc3QkcC5wa2EyKSwKICAgICAgICAgICAgIGNvbG9yID0gJ2JsYWNrJywgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gZXhwcmVzc2lvbigncCcqaXRhbGljKEspWydhLDInXSksIHkgPSBleHByZXNzaW9uKCdQW09wdGltYWwgfCBwJyppdGFsaWMoSylbJ2EsMSddKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbChsYWJlbHMgPSBjKCd3ZWFrJyA9ICdXZWFrJywgJ3N0cm9uZycgPSAnU3Ryb25nJyksCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAnU3VnZ2VzdGlvbicsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoJ3dlYWsnID0gJ3JlZCcsICdzdHJvbmcnID0gJ2JsYWNrJykpCgojIFdlYWsgcmFuZ2U6IGJldHdlZW4gN34xMCBhbmQgYWJvdmUgMTIuIEhvd2V2ZXIsIHRoZSB0YWlsaW5nIGVmZmVjdCBvZiBiZWluZyBhYm92ZSAxMiBpcyBiYXJlbHkgb3ZlciB0aGUgY3V0b2ZmLCBzbyB3aWxsIGJlIG9taXR0ZWQgZm9yIHNpbXBsaWNpdHkuCnBrYTIucm5nLndrID0gcmFuZ2UoZmlsdGVyKHJhbmdlLnBrYTIud2ssIHAucGthMiA+IDAuNSpkaWZmKHJhbmdlKHAucGthMikpICttaW4ocC5wa2EyKSkkcGthMikKcGthMi5ybmcuc3QgPSByYW5nZShmaWx0ZXIocmFuZ2UucGthMi5zdCwgcC5wa2EyID4gMC43NSpkaWZmKHJhbmdlKHAucGthMikpK21pbihwLnBrYTIpKSRwa2EyKQoKcHJpbnQoJ0ZpcnN0IHBLYTonKQpwcmludCgnV2VhayByYW5nZTonKQpwcmludCgnQmV0d2VlbjonKQpyb3VuZChwa2EyLnJuZy53aywgMikKcHJpbnQoJ1N0cm9uZyByYW5nZTonKQpwcmludCgnQmV0d2VlbicpCnJvdW5kKHBrYTIucm5nLnN0LCAyKQoKYGBgCgpSYW5nZSBmb3IgdGhlIDJuZCBwS2E6CldlYWsgc3VnZ2VzdGlvbjogICAgOC40OSB+IDEzLjIzClN0cm9uZyBzdWdnZXN0aW9uOiAxMC41MiB+IDEyLjA5CgojYGBge3IgT3B0aW1hbCBDYXB0dXJlIE1hcmdpbmFscyBOYXR1cmFsIHZhcmlhYmxlczogU3VnZ2VzdGVkIFJhbmdlIFF1aW5vbmUgY29uY2VudHJhdGlvbn0KIyBTZXQgdXAgdGhlIG1hcmdpbmFsaXphdGlvbiwgaGlnaGVyIHJlc29sdXRpb24gdGhhbiB0aGUgc2luZ2xlIHZhcmlhYmxlIG1hcmdpbmFscyBmb3IgcGxvdHRpbmcKcmVzb2x1dGlvbiA9IDEwMDsgTUNzYW1wID0gMjAwMApwa2EyLnJuZyA9IGMoMCwgNS41KTsgbG9nQS5ybmcgPSBjKC0yLCAwLjUpOyBOYS5BLnJuZyA9IGMoLTcsIDAuNykKCnJhbmdlLmxvZ0EgPSBkYXRhLmZyYW1lKGxvZ0EgPSBzZXEoZnJvbSA9IG1pbihsb2dBLnJuZyksIHRvID0gbWF4KGxvZ0Eucm5nKSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBwLmxvZ0Eud2sgPSBOYU4sIHAubG9nQS5zdCA9IE5hTikKCiMgRm9yIHJhbmRvbSBzbWFwbGluZywgQ29uc3RyYWluIHBrYTEgZmlyc3QsIHRoZW4gcGthMgpmb3IoaSBpbiAxOnJlc29sdXRpb24pewogICMgU3Ryb25nIHN1Z2dlc3Rpb24KICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmcuc3RbMV0sIG1heCA9IHBrYTEucm5nLnN0WzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmcuc3RbMV0sIG1heCA9IHBrYTIucm5nLnN0WzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcmFuZ2UubG9nQSRsb2dBW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBOYS5BLnJuZ1sxXSwgbWF4ID0gTmEuQS5ybmdbMl0pKQogICMgQWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgbWF4aW11bSBwS2EyIHJhbmdlIGlzIGhpZ2hlciB0aGFuIHRoZSBwS2ExIHJhbmdlCiAgZmlsbC5mcmFtZSA9IGZpbHRlcihmaWxsLmZyYW1lLCBwa2EyIC0gcGthMSA8IHBrYTIucm5nWzJdLCBwa2EyIC0gcGthMSA+IHBrYTIucm5nWzFdKQogIHdoaWxlKG5yb3coZmlsbC5mcmFtZSkgPCBNQ3NhbXApewogICAgZmlsbC5hZGQgPSBkYXRhLmZyYW1lKHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZy5zdFsxXSwgbWF4ID0gcGthMS5ybmcuc3RbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZy5zdFsxXSwgbWF4ID0gcGthMi5ybmcuc3RbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSByYW5nZS5sb2dBJGxvZ0FbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IE5hLkEucm5nWzFdLCBtYXggPSBOYS5BLnJuZ1syXSkpCiAgICBmaWxsLmFkZCA9IGZpbHRlcihmaWxsLmFkZCwgcGthMiAtIHBrYTEgPCBwa2EyLnJuZ1syXSwgcGthMiAtIHBrYTEgPiBwa2EyLnJuZ1sxXSkKICAgIGZpbGwuZnJhbWUgPSByYmluZChmaWxsLmZyYW1lLCBmaWxsLmFkZCkKICB9CiAgZmlsbC5mcmFtZSA9IGZpbGwuZnJhbWVbMTpNQ3NhbXAsIF0KICBmaWxsLmZyYW1lJE5hLkEgPSBmaWxsLmZyYW1lJE5hLkEgKyBmaWxsLmZyYW1lJGxvZ0EKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICByYW5nZS5sb2dBJHAubG9nQS5zdFtpXSA9IG1lYW4oZmlsbC5mcmFtZSRwLmFjY2VwdCkKICAKICAjIFdlYWsgc3VnZ2VzdGlvbgogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKHBrYTEgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2ExLnJuZy53a1sxXSwgbWF4ID0gcGthMS5ybmcud2tbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBrYTIgPSBydW5pZihuID0gTUNzYW1wLCBtaW4gPSBwa2EyLnJuZy53a1sxXSwgbWF4ID0gcGthMi5ybmcud2tbMl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0EgPSByYW5nZS5sb2dBJGxvZ0FbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmEuQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IE5hLkEucm5nWzFdLCBtYXggPSBOYS5BLnJuZ1syXSkpCiAgIyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBtYXhpbXVtIHBLYTIgcmFuZ2UgaXMgaGlnaGVyIHRoYW4gdGhlIHBLYTEgcmFuZ2UKICBmaWxsLmZyYW1lID0gZmlsdGVyKGZpbGwuZnJhbWUsIHBrYTIgLSBwa2ExIDwgcGthMi5ybmdbMl0sIHBrYTIgLSBwa2ExID4gcGthMi5ybmdbMV0pCiAgd2hpbGUobnJvdyhmaWxsLmZyYW1lKSA8IE1Dc2FtcCl7CiAgICBmaWxsLmFkZCA9IGRhdGEuZnJhbWUocGthMSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTEucm5nLndrWzFdLCBtYXggPSBwa2ExLnJuZy53a1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTIucm5nLndrWzFdLCBtYXggPSBwa2EyLnJuZy53a1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJhbmdlLmxvZ0EkbG9nQVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICAgIGZpbGwuYWRkID0gZmlsdGVyKGZpbGwuYWRkLCBwa2EyIC0gcGthMSA8IHBrYTIucm5nWzJdLCBwa2EyIC0gcGthMSA+IHBrYTIucm5nWzFdKQogICAgZmlsbC5mcmFtZSA9IHJiaW5kKGZpbGwuZnJhbWUsIGZpbGwuYWRkKQogIH0KICBmaWxsLmZyYW1lID0gZmlsbC5mcmFtZVsxOk1Dc2FtcCwgXQogIGZpbGwuZnJhbWUkTmEuQSA9IGZpbGwuZnJhbWUkTmEuQSArIGZpbGwuZnJhbWUkbG9nQQogIHJlcy5mbHV4ID0gcHJlZGljdChvYmplY3QgPSBtb2QuZmx1eCwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIHJlcy5lbmVyID0gcHJlZGljdChvYmplY3QgPSBtb2QuZW5lciwgbmV3ZGF0YSA9IGZpbGwuZnJhbWUsIHR5cGUgPSAnVUsnKQogIGZpbGwuZnJhbWUkcC5hY2NlcHQgPSAoMSAtIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmZsdXgkbWVhbiAtIEYuY3V0b2YsIHNkID0gcmVzLmZsdXgkc2QpKSAqCiAgICBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5lbmVyJG1lYW4gLSBFLmN1dG9mLCBzZCA9IHJlcy5lbmVyJHNkKQogIHJhbmdlLmxvZ0EkcC5sb2dBLndrW2ldID0gbWVhbihmaWxsLmZyYW1lJHAuYWNjZXB0KQp9CgojIFBsb3QgdGhlIHByb2JhYmlsaXRpZXMgdG8gZGV0ZXJtaW5lIGhvdyB0byBkZXNjcmliZSB0aGUgb3B0aW1hbCByYW5nZQpnZ3Bsb3QoKSArCiAgZ2VvbV9wYXRoKGRhdGEgPSByYW5nZS5sb2dBLCBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gcC5sb2dBLndrLCBjb2xvciA9ICd3ZWFrJykpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUqZGlmZihyYW5nZShyYW5nZS5sb2dBJHAubG9nQS53aykpK21pbihyYW5nZS5sb2dBJHAubG9nQS53ayksIAogICAgICAgICAgICAgY29sb3IgPSAncmVkJywgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV9wYXRoKGRhdGEgPSByYW5nZS5sb2dBLCBtYXBwaW5nID0gYWVzKHggPSAxMF5sb2dBLCB5ID0gcC5sb2dBLnN0LCBjb2xvciA9ICdzdHJvbmcnKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNzUqZGlmZihyYW5nZShyYW5nZS5sb2dBJHAubG9nQS5zdCkpK21pbihyYW5nZS5sb2dBJHAubG9nQS5zdCksCiAgICAgICAgICAgICBjb2xvciA9ICdibGFjaycsIGxpbmV0eXBlID0gMikgKwogIGxhYnMoeCA9ICd7UXVpbm9uZX0nLCB5ID0gZXhwcmVzc2lvbignUFtPcHRpbWFsIHwgcCcqaXRhbGljKEspWydhLDEnXSonLCBwJyppdGFsaWMoSylbJ2EsMiddKiddJykpICsKICBzY2FsZV9jb2xvcl9tYW51YWwobGFiZWxzID0gYygnd2VhaycgPSAnV2VhaycsICdzdHJvbmcnID0gJ1N0cm9uZycpLAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gJ1N1Z2dlc3Rpb24nLAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCd3ZWFrJyA9ICdyZWQnLCAnc3Ryb25nJyA9ICdibGFjaycpKSArCiAgc2NhbGVfeF9sb2cxMCgpCgojIFJhbmdlcy4gVGhlIHdlYWsgc3VnZ2VzdGlvbiBoYXMgYSBzbGlnaHQgZGlwIHVuZGVyLCBidXQgaXQgaXMgbmVhcmx5IGZsYXQgYXQgdGhhdCBwb2ludCwgc28gSSB3aWxsIGluY2x1ZGUgaXQgaW4gdGhlIHJhbmdlCmxvZ0Eucm5nLndrID0gcmFuZ2UoZmlsdGVyKHJhbmdlLmxvZ0EsIHAubG9nQS53ayA+IDAuNSpkaWZmKHJhbmdlKHAubG9nQS53aykpICttaW4ocC5sb2dBLndrKSkkbG9nQSkKbG9nQS5ybmcuc3QgPSByYW5nZShmaWx0ZXIocmFuZ2UubG9nQSwgcC5sb2dBLnN0ID4gMC43NSpkaWZmKHJhbmdlKHAubG9nQS5zdCkpK21pbihwLmxvZ0Euc3QpKSRsb2dBKQoKcHJpbnQoJ0ZpcnN0IHBLYTonKQpwcmludCgnV2VhayByYW5nZTonKQpwcmludCgnQmV0d2VlbjonKQpyb3VuZCgxMF5sb2dBLnJuZy53aywgMikKcHJpbnQoJ1N0cm9uZyByYW5nZTonKQpwcmludCgnQmV0d2VlbicpCnJvdW5kKDEwXmxvZ0Eucm5nLnN0LCAyKQoKYGBgCgpSYW5nZSBmb3IgUXVpbm9uZSBjb25jZW50cmF0aW9uCldlYWsgc3VnZ2VzdGlvbjogICAzMCBtTSB+IDMuMSBNClN0cm9uZyBzdWdnZXN0aW9uOiA3MCBtTSB+IDMxMCBtTQoKI2BgYHtyIE9wdGltYWwgQ2FwdHVyZSBNYXJnaW5hbHMgTmF0dXJhbCB2YXJpYWJsZXM6IFN1Z2dlc3RlZCBSYW5nZSBOYU9IIGNvbmNlbnRyYXRpb259CiMgU2V0IHVwIHRoZSBtYXJnaW5hbGl6YXRpb24sIGhpZ2hlciByZXNvbHV0aW9uIHRoYW4gdGhlIHNpbmdsZSB2YXJpYWJsZSBtYXJnaW5hbHMgZm9yIHBsb3R0aW5nCnJlc29sdXRpb24gPSAxMDA7IE1Dc2FtcCA9IDIwMDAKcGthMi5ybmcgPSBjKDAsIDUuNSk7IGxvZ0Eucm5nID0gYygtMiwgMC41KTsgTmEuQS5ybmcgPSBjKC03LCAwLjcpCgpyYW5nZS5OYS5BID0gZGF0YS5mcmFtZShOYS5BLndrID0gc2VxKGZyb20gPSBtaW4oTmEuQS5ybmcpICsgbWluKGxvZ0Eucm5nLndrKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPSBtYXgoTmEuQS5ybmcpICsgbWF4KGxvZ0Eucm5nLndrKSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBOYS5BLnN0ID0gc2VxKGZyb20gPSBtaW4oTmEuQS5ybmcpICsgbWluKGxvZ0Eucm5nLnN0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPSBtYXgoTmEuQS5ybmcpICsgbWF4KGxvZ0Eucm5nLnN0KSwgbGVuZ3RoLm91dCA9IHJlc29sdXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBwLk5hLkEud2sgPSBOYU4sIHAuTmEuQS5zdCA9IE5hTikKCiMgRm9yIHJhbmRvbSBzYW1wbGluZywgQ29uc3RyYWluIHBrYTEgZmlyc3QsIHRoZW4gcGthMiwgdGhlbiBsb2dBCmZvcihpIGluIDE6cmVzb2x1dGlvbil7CiAgIyBTdHJvbmcgc3VnZ2VzdGlvbgogICMgQWRqdXN0ZWQgbG9nQSByYW5nZQogIGxvZ0Eucm5nLnRlc3QgPSBjKG1heChjKGxvZ0Eucm5nLnN0WzFdLCByYW5nZS5OYS5BJE5hLkEuc3RbaV0gLSBOYS5BLnJuZ1syXSkpLAogICAgICAgICAgICAgICAgICAgIG1pbihjKGxvZ0Eucm5nLnN0WzJdLCByYW5nZS5OYS5BJE5hLkEuc3RbaV0gLSBOYS5BLnJuZ1sxXSkpKQoKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmcuc3RbMV0sIG1heCA9IHBrYTEucm5nLnN0WzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmcuc3RbMV0sIG1heCA9IHBrYTIucm5nLnN0WzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbWluKGxvZ0Eucm5nLnRlc3QpLCBtYXggPSBtYXgobG9nQS5ybmcudGVzdCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSByYW5nZS5OYS5BJE5hLkEuc3RbaV0pCiAgIyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBtYXhpbXVtIHBLYTIgcmFuZ2UgaXMgaGlnaGVyIHRoYW4gdGhlIHBLYTEgcmFuZ2UKICBmaWxsLmZyYW1lID0gZmlsdGVyKGZpbGwuZnJhbWUsIHBrYTIgLSBwa2ExIDwgcGthMi5ybmdbMl0sIHBrYTIgLSBwa2ExID4gcGthMi5ybmdbMV0pCiAgd2hpbGUobnJvdyhmaWxsLmZyYW1lKSA8IE1Dc2FtcCl7CiAgICBmaWxsLmFkZCA9IGRhdGEuZnJhbWUocGthMSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTEucm5nLnN0WzFdLCBtYXggPSBwa2ExLnJuZy5zdFsyXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTIucm5nLnN0WzFdLCBtYXggPSBwa2EyLnJuZy5zdFsyXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IG1pbihsb2dBLnJuZy50ZXN0KSwgbWF4ID0gbWF4KGxvZ0Eucm5nLnRlc3QpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcmFuZ2UuTmEuQSROYS5BLnN0W2ldKQogICAgZmlsbC5hZGQgPSBmaWx0ZXIoZmlsbC5hZGQsIHBrYTIgLSBwa2ExIDwgcGthMi5ybmdbMl0sIHBrYTIgLSBwa2ExID4gcGthMi5ybmdbMV0pCiAgICBmaWxsLmZyYW1lID0gcmJpbmQoZmlsbC5mcmFtZSwgZmlsbC5hZGQpCiAgfQogIGZpbGwuZnJhbWUgPSBmaWxsLmZyYW1lWzE6TUNzYW1wLCBdCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5lbmVyLCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9ICgxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkpICoKICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgcmFuZ2UuTmEuQSRwLk5hLkEuc3RbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgCiAgIyBXZWFrIHN1Z2dlc3Rpb24KICBsb2dBLnJuZy50ZXN0ID0gYyhtYXgoYyhsb2dBLnJuZy53a1sxXSwgcmFuZ2UuTmEuQSROYS5BLndrW2ldIC0gTmEuQS5ybmdbMl0pKSwKICAgICAgICAgICAgICAgICAgICBtaW4oYyhsb2dBLnJuZy53a1syXSwgcmFuZ2UuTmEuQSROYS5BLndrW2ldIC0gTmEuQS5ybmdbMV0pKSkKICBmaWxsLmZyYW1lID0gZGF0YS5mcmFtZShwa2ExID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMS5ybmcud2tbMV0sIG1heCA9IHBrYTEucm5nLndrWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwa2EyID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gcGthMi5ybmcud2tbMV0sIG1heCA9IHBrYTIucm5nLndrWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbWluKGxvZ0Eucm5nLnRlc3QpLCBtYXggPSBtYXgobG9nQS5ybmcudGVzdCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hLkEgPSByYW5nZS5OYS5BJE5hLkEud2tbaV0pCiAgIyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBtYXhpbXVtIHBLYTIgcmFuZ2UgaXMgaGlnaGVyIHRoYW4gdGhlIHBLYTEgcmFuZ2UKICBmaWxsLmZyYW1lID0gZmlsdGVyKGZpbGwuZnJhbWUsIHBrYTIgLSBwa2ExIDwgcGthMi5ybmdbMl0sIHBrYTIgLSBwa2ExID4gcGthMi5ybmdbMV0pCiAgd2hpbGUobnJvdyhmaWxsLmZyYW1lKSA8IE1Dc2FtcCl7CiAgICBmaWxsLmFkZCA9IGRhdGEuZnJhbWUocGthMSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTEucm5nLndrWzFdLCBtYXggPSBwa2ExLnJuZy53a1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IHBrYTIucm5nLndrWzFdLCBtYXggPSBwa2EyLnJuZy53a1syXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nQSA9IHJ1bmlmKG4gPSBNQ3NhbXAsIG1pbiA9IG1pbihsb2dBLnJuZy50ZXN0KSwgbWF4ID0gbWF4KGxvZ0Eucm5nLnRlc3QpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcmFuZ2UuTmEuQSROYS5BLndrW2ldKQogICAgZmlsbC5hZGQgPSBmaWx0ZXIoZmlsbC5hZGQsIHBrYTIgLSBwa2ExIDwgcGthMi5ybmdbMl0sIHBrYTIgLSBwa2ExID4gcGthMi5ybmdbMV0pCiAgICBmaWxsLmZyYW1lID0gcmJpbmQoZmlsbC5mcmFtZSwgZmlsbC5hZGQpCiAgfQogIGZpbGwuZnJhbWUgPSBmaWxsLmZyYW1lWzE6TUNzYW1wLCBdCiAgcmVzLmZsdXggPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5mbHV4LCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgcmVzLmVuZXIgPSBwcmVkaWN0KG9iamVjdCA9IG1vZC5lbmVyLCBuZXdkYXRhID0gZmlsbC5mcmFtZSwgdHlwZSA9ICdVSycpCiAgZmlsbC5mcmFtZSRwLmFjY2VwdCA9ICgxIC0gcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZmx1eCRtZWFuIC0gRi5jdXRvZiwgc2QgPSByZXMuZmx1eCRzZCkpICoKICAgIHBub3JtKHEgPSAwLCBtZWFuID0gcmVzLmVuZXIkbWVhbiAtIEUuY3V0b2YsIHNkID0gcmVzLmVuZXIkc2QpCiAgcmFuZ2UuTmEuQSRwLk5hLkEud2tbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCn0KCiMgUGxvdCB0aGUgcHJvYmFiaWxpdGllcyB0byBkZXRlcm1pbmUgaG93IHRvIGRlc2NyaWJlIHRoZSBvcHRpbWFsIHJhbmdlCmdncGxvdCgpICsKICBnZW9tX3BhdGgoZGF0YSA9IHJhbmdlLk5hLkEsIG1hcHBpbmcgPSBhZXMoeCA9IDEwXk5hLkEud2ssIHkgPSBwLk5hLkEud2ssIGNvbG9yID0gJ3dlYWsnKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSpkaWZmKHJhbmdlKHJhbmdlLk5hLkEkcC5OYS5BLndrKSkrbWluKHJhbmdlLk5hLkEkcC5OYS5BLndrKSwgCiAgICAgICAgICAgICBjb2xvciA9ICdyZWQnLCBsaW5ldHlwZSA9IDIpICsKICBnZW9tX3BhdGgoZGF0YSA9IHJhbmdlLk5hLkEsIG1hcHBpbmcgPSBhZXMoeCA9IDEwXk5hLkEuc3QsIHkgPSBwLk5hLkEuc3QsIGNvbG9yID0gJ3N0cm9uZycpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC43NSpkaWZmKHJhbmdlKHJhbmdlLk5hLkEkcC5OYS5BLnN0KSkrbWluKHJhbmdlLk5hLkEkcC5OYS5BLnN0KSwKICAgICAgICAgICAgIGNvbG9yID0gJ2JsYWNrJywgbGluZXR5cGUgPSAyKSArCiAgbGFicyh4ID0gJ3tRdWlub25lfScsIHkgPSBleHByZXNzaW9uKCdQW09wdGltYWwgfCBwJyppdGFsaWMoSylbJ2EsMSddKicsIHAnKml0YWxpYyhLKVsnYSwyJ10qJywge1F1aW5vbmV9XScpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IGMoJ3dlYWsnID0gJ1dlYWsnLCAnc3Ryb25nJyA9ICdTdHJvbmcnKSwKICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdTdWdnZXN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygnd2VhaycgPSAncmVkJywgJ3N0cm9uZycgPSAnYmxhY2snKSkgKwogIHNjYWxlX3hfbG9nMTAoKQoKYGBgCgpSYW5nZSBmb3IgdGhlIDFzdCBwS2E6CldlYWsgc3VnZ2VzdGlvbjogICA3LjIzIH4gOS41NQpTdHJvbmcgc3VnZ2VzdGlvbjogNy41OCB+IDguODUKClJhbmdlIGZvciB0aGUgMm5kIHBLYToKV2VhayBzdWdnZXN0aW9uOiAgICA4LjQ5IH4gMTMuMjMKU3Ryb25nIHN1Z2dlc3Rpb246IDEwLjUyIH4gMTIuMDkKClJhbmdlIGZvciBRdWlub25lIGNvbmNlbnRyYXRpb24KV2VhayBzdWdnZXN0aW9uOiAgIDMwIG1NIH4gMy4xIE0KU3Ryb25nIHN1Z2dlc3Rpb246IDcwIG1NIH4gMzEwIG1NCgpUaGVyZSBpcyBub3QgYSBjbGVhciByYW5nZSBmb3IgdGhlIE5hT0ggY29uY2VudHJhdGlvbi4KRm9yIHRoZSBzdHJvbmcgc2V0IG9mIHJhbmdlIHN1Z2dlc3Rpb25zIChoaWdoZXIgcHJvYmFiaWxpdHkgb2YgYWNjZXB0YW5jZSksIGl0IGFwcGVhcnMgdG8gaGF2ZSB0byBvcHRpbWFsIGNlbnRlcmVkIGF0IDEwIG1NIE5hT0ggYW5kIDEwIHVNIE5hT0guClRoZXNlIHR3byB2YWx1ZXMgbGlrZWx5IGFyZSBhc3NvY2lhdGVkIHdpdGggZmFsbGluZyBvbiBvbmUgc2lkZSBvciB0aGUgb3RoZXIgb2YgYSBwYXJ0aWN1bGFyIGJ1ZmZlciByZWdpb24gb3Igc2V0IG9mIGJ1ZmZlciByZWdpb25zLgpGb3IgdGhlIHdlYWsgc2V0IG9mIHJhbmdlIHN1Z2dlc3Rpb25zIChsb3dlciBwcm9iYWJpbGl0eSBvZiBhY2NlcHRhbmNlKSwgaXQgY291bGQgc3BhbiBmcm9tIGFib3V0IDEgTSB0byBuZWdsaWdpYmxlIGNvbmNlbnRyYXRpb25zIGFuZCBzdGlsbCB5aWVsZCBnb29kIHJlc3VsdHMuCgoKIyBDb21wYXJlIHRvIGtub3duIGRhdGEKCkEgc21hbGwgc2V0IG9mIHF1aW5vbmUgcEthcyB3YXMgdXNlZCB0byBjb25zdHJhaW4gdGhlIHNlYXJjaCBzcGFjZS4KVGhpcyBzYW1lIGRhdGFzZXQgY2FuIGJlIGFzc2Vzc2VkIGZvciB0aGUgbGlrZWxpaG9vZCB0aGF0IGFueSBjb21wb3VuZCB3aWxsIGJlIHZpYWJsZSBnaXZlbiBvbmx5IHRoZSBwS2EgdmFsdWVzLgoKI2BgYHtyIEtub3duIGNvbXBvdW5kcyBhc3Nlc3NtZW50fQojIHBrYTEgPSBxdWlub25lLmRhdGEkUGthLjEKIyBwa2EyID0gcXVpbm9uZS5kYXRhJFBrYS4yCgpxdWlub25lLmRhdGEkcC5hY2NlcHQgPSBOYU4KcXVpbm9uZS5kYXRhJGguYWNjZXB0ID0gTmFOCnF1aW5vbmUuZGF0YSRsLmFjY2VwdCA9IE5hTgoKZm9yKGkgaW4gMTpucm93KHF1aW5vbmUuZGF0YSkpewogICMgcEthcwogIGZpbGwuZnJhbWUgPSBkYXRhLmZyYW1lKHBrYTEgPSBxdWlub25lLmRhdGEkUGthLjFbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGthMiA9IHF1aW5vbmUuZGF0YSRQa2EuMltpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dBID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gbG9nQS5ybmdbMV0sIG1heCA9IGxvZ0Eucm5nWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYS5BID0gcnVuaWYobiA9IE1Dc2FtcCwgbWluID0gTmEuQS5ybmdbMV0sIG1heCA9IE5hLkEucm5nWzJdKSkKICByZXMuZmx1eCA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmZsdXgsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICByZXMuZW5lciA9IHByZWRpY3Qob2JqZWN0ID0gbW9kLmVuZXIsIG5ld2RhdGEgPSBmaWxsLmZyYW1lLCB0eXBlID0gJ1VLJykKICBmaWxsLmZyYW1lJHAuYWNjZXB0ID0gKDEgLSBwbm9ybShxID0gMCwgbWVhbiA9IHJlcy5mbHV4JG1lYW4gLSBGLmN1dG9mLCBzZCA9IHJlcy5mbHV4JHNkKSkgKgogICAgcG5vcm0ocSA9IDAsIG1lYW4gPSByZXMuZW5lciRtZWFuIC0gRS5jdXRvZiwgc2QgPSByZXMuZW5lciRzZCkKICBxdWlub25lLmRhdGEkcC5hY2NlcHRbaV0gPSBtZWFuKGZpbGwuZnJhbWUkcC5hY2NlcHQpCiAgcXVpbm9uZS5kYXRhJGguYWNjZXB0W2ldID0gcXVhbnRpbGUoZmlsdGVyKGZpbGwuZnJhbWUsICFpcy5uYW4ocC5hY2NlcHQpKSRwLmFjY2VwdCwgcHJvYnMgPSB1cHBlcikKICBxdWlub25lLmRhdGEkbC5hY2NlcHRbaV0gPSBxdWFudGlsZShmaWx0ZXIoZmlsbC5mcmFtZSwgIWlzLm5hbihwLmFjY2VwdCkpJHAuYWNjZXB0LCBwcm9icyA9IGxvd2VyKQp9CgojIFNob3cgbW9zdCBwcm9taXNpbmcgY2FuZGlkYXRlcyBpbiBvcmRlciBmcm9tIG1vc3QgdG8gbGVhc3QgbGlrZWx5IHRvIHdvcmsKcXVpbm9uZS5kYXRhW29yZGVyKHF1aW5vbmUuZGF0YSRwLmFjY2VwdCwgZGVjcmVhc2luZyA9IFRSVUUpLCAhKG5hbWVzKHF1aW5vbmUuZGF0YSkgJWluJSBjKCdRdWlub25lQ29kZScsICdFMC4xJywgJ0UwLjInKSldCgojIFBsb3QgZGVuc2l0aWVzIHdlaWdodGVkIGJ5IHRoZSBhY2NlcHRhbmNlIHByb2JhYmlsaXRpZXMKZ2dwbG90KHF1aW5vbmUuZGF0YSkgKwogICMgRGF0YQogIGdlb21fZGVuc2l0eShtYXBwaW5nID0gYWVzKHggPSBQa2EuMSwgY29sb3IgPSAnMScsIHdlaWdodCA9IHAuYWNjZXB0KSkgKwogIGdlb21fZGVuc2l0eShtYXBwaW5nID0gYWVzKHggPSBQa2EuMiwgY29sb3IgPSAnMicsIHdlaWdodCA9IHAuYWNjZXB0KSkgKwogICMgT3B0aW1hbCByYW5nZXMKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSBwa2ExLnJuZy5zdCwgY29sb3IgPSAncmVkJywgbGluZXR5cGUgPSAyKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gcGthMi5ybmcuc3QsIGNvbG9yID0gJ2JsdWUnLCBsaW5ldHlwZSA9IDIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwobGFiZWxzID0gYygnMScgPSBleHByZXNzaW9uKCdwJyppdGFsaWMoSylbJ2EsMSddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMicgPSBleHByZXNzaW9uKCdwJyppdGFsaWMoSylbJ2EsMiddKSksCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoJzEnID0gJ3JlZCcsICcyJyA9ICdibHVlJykpICsKICBsYWJzKHggPSBleHByZXNzaW9uKCdwJyppdGFsaWMoSylbJ2EnXSksIHkgPSAnTGlrZWxpaG9vZCBXZWlnaHRlZCBEZW5zaXR5Jywgc3VidGl0bGUgPSAnVmlhYmxlIEtub3duIFF1aW5vbmVzJywKICAgICAgIGNvbG9yID0gJycpCgpgYGAKCkJhc2VkIHNvbGVseSBvbiBwS2EgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCA1IHF1aW5vbmVzIGhhdmUgYSBtb2RlcmF0ZSBsaWtlbGlob29kIG9mIGhhdmluZyBsb3cgZW5lcmd5IGRlbWFuZHMgKHByb2JhYmlsaXR5IG9mIGFjY2VwdGFuY2UgYWJvdXQgPiA0MCUpLgpUaGVzZSA1IGNhbmRpZGF0ZXMgaGF2ZSBwS2EgdmFsdWVzIHRoYXQgYXJlIHdpdGhpbiB0aGUgc3Ryb25nIHN1Z2dlc3Rpb24gc3BhbnM6CgoqIHBLYTE6IDcuNzcgfiA4LjE5IGNvbXBhcmVkIHRvIHRoZSBjYWxjdWxhdGVkIDcuNTggfiA4Ljg1CiogcEthMjogMTAuNjEgfiAxMS4zMiBjb21wYXJlZCB0byB0aGUgY2FsY3VsYXRlZCAxMC41MiB+IDEyLjA5CgpUaGUgdG9wIGNhbmRpZGF0ZXMgYXBwZWFyIHRvIGhhdmUgYSBzdHJvbmdseSBlbGVjdHJvbiB3aXRoZHJhd2luZyBveHlnZW4gYXQgdGhlIHNlY29uZCBjYXJib24sIGFuZCA0IG9mIHRoZSB0b3AgNSBoYXZlIGFkZGl0aW9uYWwgb3h5Z2VuLWNvbnRhaW5pbmcgZ3JvdXBzIG9uIG90aGVyIGNhcmJvbnMuClRoaXMgaXMgcHJvbWlzaW5nIGdpdmVuIHRoYXQgdGhlc2UgZ3JvdXBzIGFyZSBsaWtlbHkgdG8gaW5jcmVhc2UgdGhlIHNvbHViaWxpdHkgbGltaXQgZW5vdWdoIHRvIGZhbGwgd2l0aGluIHRoZSBvcHRpbWFsIHJlZ2lvbiwgYWx0aG91Z2ggaXQgbWF5IGxlYWQgdG8gZ3JlYXRlciBzZW5zaXRpdml0eSB0byBveHlnZW4gZ2FzIGR1ZSB0byBhbiBpbmNyZWFzZSBpbiB0aGUgZWxlY3Ryb3BoaWxpY2l0eSBvZiB0aGUgY2FyYm9ucy4KCg==